updateOrCreate - Laravel 中的批量分配异常

updateOrCreate - Mass Assignment Exception in Laravel

我正在处理系统的 CRUD 部分。用户可以更新关键字。我想做的类似于 INSERT IGNORE MySQL 语句。

我在一个 foreach 循环中并尝试更新关键字,但是我得到一个

Mass Assignment Exception

错误

我现在的代码如下,我是不是做错了什么?

// Save The Keywords...
$kwords = Input::get('keywords');

foreach($kwords as $key => $value)
{
    // Save The Keywords...
    Keywords::updateOrCreate( array('pack_id'=> $pack->pack_id, 'keyword_title' => $value));
}

干杯

您需要在模型上定义 $fillable 或 $guarded 属性。如果您希望除 id 之外的所有内容均可填写,请按以下方式定义:

class Keywords extends Model {
    protected $guarded = array('id');
}
如果您尝试批量分配未在模型 class 定义中指定的字段,

Laravel 会抱怨。

这与以下事实有关:恶意用户可能会尝试在您的模型中分配不应从应用程序用户更新的文件(即向表单添加一些参数)

为了能够批量分配字段,您必须在模型中指定您希望成为的所有字段'mass-assignable':

class Keywords extends Eloquent {

    protected $fillable = array('pack_id', 'keyword_title');

}

或者,您可以让一些字段受到保护(不可批量分配),而所有其他字段都可以批量分配:

class Keywords extends Eloquent {

    protected $guarded = array('guarded_field');

}

如果您使用的是 Laravel 4,请查看 here 了解更多信息