如何将$model
的属性更改为原始属性。在我的nova字段文件中,在fillAttributeFromRequest内,如果请求具有hasSomeValue,我希望将$ model属性更改回原始属性。这主要适用于用户编辑他们已经制作的现有资源。
protected function fillAttributeFromRequest(NovaRequest $request, $requestAttribute, $model, $attribute)
{
if ($request->hasSomeValue)
{
Resource::createNew($model);
//need to change $model back to original
}
}
我已经尝试过$model->fill($model->getOriginal());
,但这会引发错误,因为某些字段不可填写。
我也做不到$model->name => $model->getOriginal()->name; etc
因为它是一个包,每个用户的字段都不同。
一个可行的解决方案可能没有调用模型的static::saving()
方法,但是还没有弄清楚该怎么做。
您可以从$originals
数组中删除不可填充的元素吗?
喜欢这个:
//todo: set fillables array to public
$fillableProperties = $model->fillables;
// filter non-fillable properties
$originalFillables = array_filter(
$model->getOriginal(),
function ($key) use ($fillableProperties ) {
return in_array($key, $fillableProperties );
},
ARRAY_FILTER_USE_KEY
);
$model->fill($originalFillables);