Laravel:静态::创建与 DB:插入

Pre*_*oso 5 php database laravel eloquent

如果我在模型中使用以下代码片段,它会插入数据:

$instance = DB::table('users')->insert(compact('email', 'username'));
Run Code Online (Sandbox Code Playgroud)

但如果我这样做:

$instance = static::create(compact('email', 'username'));
Run Code Online (Sandbox Code Playgroud)

它插入空值,但插入了 created_at 和 updated_at。

cee*_*yoz 4

Laravel 的created_at/updated_atIlluminate\Database\Eloquent\Model. 原始DB::table查询生成器不是 Eloquent 模型,因此没有这些自动参数。

NULL数据正在插入 Eloquent 查询中,因为 Eloquent 有一个$fillable您需要定义的参数。该参数设置可以批量分配哪些列。当您执行fillcreate或以其他方式实例化新对象时,Laravel 会删除不在该数组中的属性。在您的模型中,您需要:

class User extends Eloquent {
  protected $fillable = ['email', 'username'];
}
Run Code Online (Sandbox Code Playgroud)