是否可以通过Laravel查询构建器中的条件向JSON添加自定义字段?

时间:2019-07-12 23:52:51

标签: php mysql json laravel laravel-query-builder

天才们。

我正在制作Laravel之类的Instagram之类的网站。
人们可以像在Instagram上一样发布图片并按“爱”按钮。

我的问题是如何实现当前登录用户是否被“爱”动。

我最终设法在此控制器中按以下方式获取了用户按下“爱”的列表。但这是太多无用的信息。如果有1千人推“爱”……那将是可怕的JSON。

我已经整整一天都为了做这件事而死...希望我能得到你的帮助。谢谢。

当前JSON结构。 current Json structure 当前代码。 Current Code 评论模型。 Comment model

1 个答案:

答案 0 :(得分:1)

您可以使用属性和追加来创建自定义数据字段。由于它是布尔值,因此我将其称为is_loved,但您可以根据需要更改它。


class Comment extends Model
{
    // attributes to append to JSON response
    protected $appends = ['is_loved'];

    // ... your other properties and methods

    public function getIsLovedAttribute()
    {
        if (auth()->check()) {
            return !! $this->loveComments()->where('from',auth()->user()->id)->count();
        }

        return false;
    }
}

现在不再需要加载love_comments关系。

编辑:我添加了一个授权检查以确保用户首先登录。这是为了防止您向来宾公开发表评论。否则,可能会引发错误。