是否可以在 Laravel 查询构建器中按条件将自定义字段添加到 JSON?
Is it possible to add custom field to JSON by condition in Laravel query builder?
天才们。
我正在通过 Laravel 制作类似 Instagram 的网站。
人们可以 post 图片,按下 'love' 按钮,就像我们在 Instagram 上所做的那样。
我的问题是如何实现是否推送当前登录用户'love'。
我终于设法在这个控制器中获得了用户推送 'love' 的列表,如下所示。但它是太多无用的信息。如果 1000 个人推 'love' 怎么办...那会很糟糕 JSON.
为了制作这部分我已经耗费了一整天...希望能得到你的帮助。谢谢。
当前 JSON 结构。
当前代码。
评论模型。
您可以使用属性和追加来创建自定义数据字段。由于它是一个布尔值,我将其命名为 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
关系。
编辑:我添加了授权检查以确保用户首先登录。这是为了防止您向客人公开发表评论。否则,它可能会引发错误。
天才们。
我正在通过 Laravel 制作类似 Instagram 的网站。
人们可以 post 图片,按下 'love' 按钮,就像我们在 Instagram 上所做的那样。
我的问题是如何实现是否推送当前登录用户'love'。
我终于设法在这个控制器中获得了用户推送 'love' 的列表,如下所示。但它是太多无用的信息。如果 1000 个人推 'love' 怎么办...那会很糟糕 JSON.
为了制作这部分我已经耗费了一整天...希望能得到你的帮助。谢谢。
当前 JSON 结构。
您可以使用属性和追加来创建自定义数据字段。由于它是一个布尔值,我将其命名为 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
关系。
编辑:我添加了授权检查以确保用户首先登录。这是为了防止您向客人公开发表评论。否则,它可能会引发错误。