首页 > 解决方案 > 如何在 Eloquent 中实现这种关系?

问题描述

我有 SQL 这个查询:

    选择 f.follower_id、u.fname、u.lname
    FROM 追随者 f
    INNER JOIN users u ON f.follower_id = u.id
    其中 f.user_id = $user_id
    AND u.status = 1
    按 fname、lname 排序
    限制 10

我有两个模型:用户和追随者。

一个用户可以有很多粉丝,每个粉丝都有自己的用户数据。我希望能够通过执行以下操作来获取用户的所有关注者(状态为 1):

$followers = User::get_followers();

标签: eloquent

解决方案


将此添加到您的User模型中:

public function followers()
{
    return $this->belongsToMany(User::class, 'followers', 'user_id', 'follower_id')
        ->where('status', 1)
        ->orderBy('fname')
        ->orderBy('lname');
}

然后你可以像这样访问它们:

$followers = $user->followers;

推荐阅读