首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel试图保存$appends属性

Laravel试图保存$appends属性
EN

Stack Overflow用户
提问于 2021-06-21 13:19:11
回答 1查看 973关注 0票数 4

我在Laravel 6上编码,无意中发现了这个问题。在某些情况下,我为模型中需要的字段设置了accessors,但在数据库中不存在。当我在文档中阅读时,变量$appends使所讨论的字段与模型序列化,但不保存在数据库中。

然后,当我在数据库中更新或保存特定模型的条目时,Laravel给出了一个错误,说明了field x is not present in field list。我在这里搜索,搜索了很多,但没有找到任何答案。

pluggable_data字段不是由客户端发送的.我在服务器端创建它,因为我需要它的信息来执行一些任务。但是它不足以在DB中创建一个列来存储它。

模型

代码语言:javascript
复制
    /**
     * @var array|null
     */
    protected $appends = [
        'pluggable_data'
    ];

    /**
     * @param array $pluggableData
     */
    public function setPluggableDataAttribute(array $pluggableData)
    {
        $this->attributes['pluggable_data'] = $pluggableData;
    }

    /**
     * @return array
     */
    public function getPluggableDataAttribute(): array
    {
        return $this->attributes['pluggable_data'] ?? []; //  Sometimes there is no pluggable data, then i return an empty array
    }

发生错误的地方

代码语言:javascript
复制
    $activity->setRegisterDate($fields['register_date']);
    $activity->setExtraAttribute($fields['extra']);
    $activity->update(); <----- Here

    return $activity;

错误:SQLSTATE[42S22]: Column not found: 1054 Unknown column 'pluggable_data' in 'field list'

总结我想要的内容(万一您有更好的想法):我想要一个将出现在模型序列化中的字段,即使它是一个空数组,但它不会保存在数据库中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-07 20:05:41

正如@nay在评论中所说的那样,我所要做的就是用一个真正的变量替换$this->attributes['pluggable_data'],比如$this->pluggable_data。这样,Laravel就不会认为它是一个数据库列。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68068687

复制
相关文章

相似问题

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