如果我在模型中使用以下代码片段,它会插入数据:
$instance = DB::table('users')->insert(compact('email', 'username'));
但如果我改为这样做:
$instance = static::create(compact('email', 'username'));
它插入 null,但插入了 created_at 和 updated_at。
最佳答案
Laravel 的 created_at
/updated_at
是 Illuminate\Database\Eloquent\Model
的一部分。原始的 DB::table
查询构建器不是 Eloquent 模型,因此没有那些自动参数。
NULL
数据被插入到 Eloquent 查询中,因为 Eloquent 有一个 $fillable
参数需要定义。该参数设置哪些列可以被批量分配。当您执行 fill
、create
或以其他方式实例化新对象时,Laravel 会去除不在该数组中的属性。在您的模型中,您需要:
class User extends Eloquent {
protected $fillable = ['email', 'username'];
}
关于php - Laravel:静态::创建与数据库:插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807182/