updateOrCreate-Laravel中的批量分配异常

Stu*_*ett 4 php mass-assignment laravel laravel-4 laravel-5

我正在研究系统的CRUD部分。用户可以更新关键字。我想做的事情类似于INSERT IGNOREMySQL语句。

我处于foreach循环中,尝试更新关键字,但是我得到了一个

批量分配异常

错误

我当前的代码如下,我在做特别特别的事情吗?

// 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));
}
Run Code Online (Sandbox Code Playgroud)

干杯

Mop*_*ppo 5

如果您尝试大规模分配模型类定义中未指定的字段,Laravel将抱怨。

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

为了能够大量分配这些字段,您必须指定要在模型中“可分配质量”的所有字段:

class Keywords extends Eloquent {

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

}
Run Code Online (Sandbox Code Playgroud)

另外,您可以设置一些现场守卫(不可分配),而其他所有字段也可以进行分配:

class Keywords extends Eloquent {

    protected $guarded = array('guarded_field');

}
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Laravel 4,请在此处查看更多信息