首页 > 解决方案 > 如何在我的 JSON 响应中添加其他属性,并在 laravel 中使用动态值

问题描述

在我的应用程序中,我有一个Posts和一个Reacts表都与关系相关联。

在应用程序中,用户可以对帖子做出反应(喜欢或不喜欢)并检索这个我正在使用这个功能:

public function feed()
{
    $posts=Post::with('user')
                ->with('reacts')
                ->withCount('comments')
                ->orderBy('created_at', 'DESC')
                ->get();
    return response()->json(["posts" => $posts]);
}

回应是:

在此处输入图像描述

我想在 Posts 对象中为isUserLiked添加一个字段,如果当前经过身份验证的用户喜欢该帖子,那么值对他来说将是 true 或 false,如下所示:

在此处输入图像描述

我可以添加一个附加字段,但我如何动态设置该值

这就是我在我的帖子模型中所做的:

 protected $appends = ['isUserLiked'];
 public function getIsUserLikedAttribute($id)
 {
    $react=React::where('user_id',auth()->user()->id)->where('post_id',$id)->exists();
    return $react;
 }

这返回 false,因为我不知道任何传递参数的方法(Post id)。有没有更好的方法可以得到想要的响应?谢谢!

标签: laravel

解决方案


public function getIsUserLikedAttribute($id)
 {
    return React::where('user_id',auth()->user()->id)->where('post_id',$this->id)->exists();

 }

推荐阅读