【问题标题】:Laravel, Follow-Unfollow System IssueLaravel,关注取消关注系统问题
【发布时间】:2021-03-30 02:14:27
【问题描述】:

我正在为类似的社交媒体开发一个 API。这个应用程序有一个关注取消关注系统。我做了我的关注者列表和关注者列表查询和响应。但是,我想添加关注信息(布尔值)作为回应。如何解决清除这个问题? (对不起我的英语不好)

我想要这个回复:

"data": [
    {
        "user_id": 3,
        "username": "example",
        "name": "Example",
        "photo": "default.jpg",
        "is_following": true
    }
]

目前的回应:

"data": [
    {
        "user_id": 3,
        "username": "example",
        "name": "Example",
        "photo": "default.jpg",
    }
]

跟随关系的用户模型:

function follows(){
    return $this->belongsToMany(self::class,"follows","followed_id","following_id")->select("users.id","username","name","photo");
}

function followers(){
    return $this->belongsToMany(self::class,"follows","following_id","followed_id")->select("users.id","username","name","photo");
}

我的资源:

public function toArray($request)
{
    return [
        "user_id" => $this->id,
        "username" => $this->username,
        "name" => $this->name,
        "photo" => $this->photo(),
        "is_following" =>
    ];
}

【问题讨论】:

  • is_following 究竟是什么意思?这是否意味着列出的用户正在关注经过身份验证的用户?你的控制器代码是什么?您可以在资源中通过向数组添加额外数据来解决此问题。目前没有添加任何内容...

标签: php laravel eloquent relationship


【解决方案1】:

在您的用户模型中定义一个访问器,该访问器使用您的“以下”逻辑返回真/假。

public function getIsFollowingAttribute()
{
    if (condition)
        return true;

    return false;
}

之后将此添加到用户模型中以将其包含在数组和 JSON 表示中

protected $appends = ['is_following'];

Read this

【讨论】:

  • 我知道追加,但我的 json 响应是列表(或数组或集合)。我的 json 响应将是一个列表,每个项目将“跟随”列表的属性。每次都进行数据库查询是错误的(n + 1 个问题)。应该如何建立数据库关系?
【解决方案2】:

前几天我问了这样的问题,我想用两张桌子来做,但是朋友说我可以用一张桌子来解决。如果您愿意,可以查看位置并查看问题及其解决方案。

Laravel API JSON customization and table relationship

【讨论】:

  • 我浏览了你的帖子。但是,您的 json 不存在“is_following”。我想要类似的link。我怎么能做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多