首页 > 解决方案 > 如何在 JsonResource 中包含雄辩的附加属性

问题描述

我想在资源类中构建我的 api 响应期间包含附加属性。

为此,我有一个名为 Article.php 的模型类

class Article extends Model
{
    protected $table = 'articles';

    protected $fillable = ['id', 'articleNo'];
    protected $appends = ['is_available'];

    public function getIsAvailableAttribute() {
        return true;
    }

文章控制器.php

public function index() {
    $articles = Article::all();
    return ArticleResource::collection($articles);
}

文章资源.php

class ArticleResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'articleNumber' => $this->articleNo,
            'isAvailable' => $this->is_available,
        ];
    }
}

当我尝试运行我的代码时,它给了我以下错误:

ErrorException (E_NOTICE) 未定义属性:stdClass::$is_available

如果我从我的 ArticleResource 中删除 isAvailable 行,它就可以工作。

标签: phplaraveleloquent

解决方案


推荐阅读