保存$ models的原始属性

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

如何将$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()方法,但是还没有弄清楚该怎么做。

laravel laravel-nova
1个回答
0
投票

您可以从$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);
© www.soinside.com 2019 - 2024. All rights reserved.