我想做的是以编程方式更改 $ fillable 变量的值。我正在使用 GuardsAttributes 特征的 fillable 方法来设置新的可填充变量。但是,当用户从控制器调用Model :: create门面时,可填充属性未更新。
$model = new Modal();
$model->fillable(array_merge($model->getFillable(),["new_field"]));
我想做的是,使用新的fillable属性更新Post :: create实例。我检查了服务容器,但是那里没有触发与Model相似的东西。那么,如何更新当前的Model实例?
答案 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)