Eloquent 的 create()/fill 是如何工作的()?

How does Eloquent's create()/fill work()?

我试图通过在我的模型中这样做来连续设置记录:

protected $fillable = ['completeness','task'];
    public  function add($records) {
        $this->create($records);
        $this->save();
    }

虽然所有值都在那里,但我得到这个:

QLSTATE[23502]: Not null violation: 7 ERROR: null value in column "user_id" violates not-null constraint DETAIL: Failing row contains (5, 120, null, very detailed, null, null, null, null, null, null, 2015-10-02 07:12:05, 2015-10-02 07:12:05).

create()fill() 是如何工作的?

eloquent 中的 fill() 方法非常简单。它需要一组键值对(key 是字段名称,value 是...井值)。

它:

  1. 检查模型是否完全受保护,即 $guarded 数组中的 *$fillable 数组中的空模型。如果是这样,它最终会抛出 Mass Assignment 异常
  2. 循环遍历数组(如果 table 名称存在,则从键中删除它),检查该字段是否可批量分配,如果存在增变器则改变该值,然后添加它到模型上的 $attributes 数组。

create() 创建模型的新实例,然后使用 fill() 方法,然后保存并 returns 该新实例。

如果您想更详细地研究它,文件位于:

vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php

希望对您有所帮助!