我编写了一个登录或注册用户的代码。我使用updateorcreate函数添加用户(如果不存在)更新一列,如果用户存在,它的名称是verifcode
控制器
users Table:
id(auto increment primary key)|phone|verifcode|timeStmp
---------------------------------
$phone=Input::get('phone');
$code=rand(1001,9999);
$user = new user;
$user = array('phone'=>$phone);
user::updateOrCreate($user,['verifcode' => $code]);
型号:
namespace App;
use Illuminate\Database\Eloquent\Model;
class user extends Model
{
protected $table = 'users';
protected $fillable = array('phone', 'verifcode','timeStmp');
protected $guarded = array('id');
protected $primaryKey = "id";
public $incrementing = false;
const CREATED_AT= false;
const UPDATED_AT = false;
}
对于此代码,我有以下错误: array_key_exists(): The first argument should be either a string or an integer
指向 vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasAttributes.php
文件。
我只知道错误指向updateorcreate函数的secound参数。
谢谢你的帮助
4条答案
按热度按时间o0lyfsai1#
看看它是否适合你。
l5tcr1uw2#
我终于解决了。通过将created和update列添加到表中,并将这两个coulmn添加到$guarded中,模型如下
protected $guarded = array('id','CREATED_AT','UPDATED_AT');
然后问题解决了谢谢你的帮助
rbpvctlc3#
如果你看一下laravel文档,你只是在使用
updateOrCreate
方法错误。请看下面的飞行示例。在您的情况下,应该如下所示:
ukxgm1gy4#
如果你看到
Model
类的laravel框架代码,您可以注意到updated_at
仅在不存在时存储dirty
.但是
isDirty
方法只检查空值。那就换一个吧
false
与NULL
.