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

问题描述 投票:0回答:1

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

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

我想要做的是,使用新的可填充属性更新 Post::create 实例。我检查了服务容器,但没有与那里触发的模型类似的内容。那么,如何更新当前的模型实例?

php laravel eloquent model
1个回答
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();

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

Model::unguard(true)
© www.soinside.com 2019 - 2024. All rights reserved.