php - updateOrCreate - Laravel 中的批量分配异常

标签 php laravel laravel-4 laravel-5 mass-assignment

我正在处理系统的 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));
}

干杯

最佳答案

如果您尝试批量分配模型类定义中未指定的字段,Laravel 会报错。

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

为了能够批量分配字段,您必须指定您希望在模型中“批量分配”的所有字段:

class Keywords extends Eloquent {

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

}

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

class Keywords extends Eloquent {

    protected $guarded = array('guarded_field');

}

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

关于php - updateOrCreate - Laravel 中的批量分配异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33079511/

相关文章:

php - Eloquent 中与分类法的多对多关系

php - OpenWeatherMap API 生成不正确的输出

php - 如何使用 PHP 以编程方式检查有效(未失效)链接?

php - 即使更换实际 key 后,谷歌验证码也无法工作

Laravel Eloquent,附加与关系同名的属性

php - 具有多个关联的多态关系

php - 使用 Angular.js 的 HTTP POST

php - WordPress $wpdb->选项

php - Laravel mysql php 时间戳