php - Laravel:静态::创建与数据库:插入

标签 php database laravel eloquent

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

$instance = DB::table('users')->insert(compact('email', 'username'));

但如果我改为这样做:

$instance = static::create(compact('email', 'username'));

它插入 null,但插入了 created_at 和 updated_at。

最佳答案

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'];
}

关于php - Laravel:静态::创建与数据库:插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27807182/

相关文章:

php - 如何在 my_sql 查询中添加错误消息

MySQL:为什么是 varchar(254) 而不是 varchar(255)?

mysql - 如何在多关系搜索中合并数据

php - Laravel 一对多关系查询

Laravel 5 路由模型绑定(bind)在服务器上不起作用

php - Laravel.获取一条相关记录

php - 使用PHP自动打印网页

php - 使用 mySQL 显示 count(*) 结果的最快方法(最好在一行中)

php - 使用 cURL 登录站点并从中获取数据(图像)

mysql - 在 MySql 中对 Varchar 列设置索引