如何在口才模型中以编程方式更改可填充变量实例?

时间:2019-02-20 05:40:30

标签: laravel eloquent model

我想做的是以编程方式更改 $ fillable 变量的值。我正在使用 GuardsAttributes 特征的 fillable 方法来设置新的可填充变量。但是,当用户从控制器调用Model :: create门面时,可填充属性未更新。

    $model = new Modal();
    $model->fillable(array_merge($model->getFillable(),["new_field"]));

我想做的是,使用新的fillable属性更新Post :: create实例。我检查了服务容器,但是那里没有触发与Model相似的东西。那么,如何更新当前的Model实例?

1 个答案:

答案 0 :(得分:0)

那是因为$model->fillable()是一个实例函数:在Model的实例上定义;因此,当您更改$ fillable变量时,仅在该特定Model实例上进行了更改。 Model::create()函数是静态函数,仅在Model类上动态定义。

依次尝试:

$model = new Model();
$model->fillable(array_merge($model->getFillable(),["new_field"]));
$model->fill($your_data)->save();

或者,您可以尝试在应用启动时为Class设置unguarded = true,而不是在每个模型上都设置fillable():

Model::unguard(true)