首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存$models原始属性

保存$models原始属性
EN

Stack Overflow用户
提问于 2020-01-06 22:42:54
回答 1查看 71关注 0票数 0

如何将$model的属性更改为原始。在我的nova字段文件中,在fillAttributeFromRequest中,如果请求hasSomeValue,我希望将我的$model属性更改回原始。这主要适用于用户编辑他们已经创建的预先存在的资源时。

代码语言:javascript
复制
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()方法,但还没有弄清楚如何去做。

EN

回答 1

Stack Overflow用户

发布于 2020-01-06 22:49:40

你能从$originals数组中移除不可填充的元素吗?

如下所示:

代码语言:javascript
复制
//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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59614046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档