You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 5.4:如何在单表中实现粉丝与关注用户的获取功能

解决Laravel 5.4中获取用户关注列表的问题

别着急,我来帮你搞定这个问题!用户关注功能本质是多对多关联——一个用户可以关注多个用户,同时也能被多个用户关注。你已经有了followers中间表,并且能正常获取粉丝,只要把关联关系反过来定义,就能轻松拿到用户的关注列表啦。

第一步:确认followers表的结构

首先得确保你的followers中间表字段是合理的,通常应该包含:

  • follower_id:发起关注的用户ID(也就是当前用户的ID)
  • followed_id:被关注的用户ID
  • 可选的created_at/updated_at时间戳字段

假设你之前获取粉丝的followers()方法是这样的(粉丝指的是关注当前用户的人):

public function followers()
{
    // 参数顺序:关联模型、中间表名、当前模型在中间表的外键、关联模型在中间表的外键
    return $this->belongsToMany(User::class, 'followers', 'followed_id', 'follower_id');
}

第二步:定义following()关联方法

要获取当前用户关注的人,只需要调换外键的顺序即可。在User模型中添加以下方法:

/**
 * 获取当前用户关注的所有用户
 */
public function following()
{
    return $this->belongsToMany(User::class, 'followers', 'follower_id', 'followed_id');
}

这里的逻辑很简单:当前用户是follower_id对应的用户,我们要关联到followed_id对应的所有用户,也就是他主动关注的人。

第三步:使用方法获取关注列表

现在你就可以通过以下方式轻松获取关注列表了:

// 获取当前登录用户的关注列表
$currentUser = auth()->user();
$followingUsers = $currentUser->following; // 直接返回用户集合

// 也可以添加条件查询,比如只获取已验证的关注用户
$verifiedFollowing = $currentUser->following()->where('email_verified_at', '!=', null)->get();

常见问题排查

如果还是没成功,可能是这几个坑:

  • 外键顺序搞反:这是最容易犯的错误,一定要记住belongsToMany的后两个参数顺序——先写当前模型在中间表的外键,再写关联模型的外键。
  • 中间表名不匹配:确保你传入的中间表名和数据库里的实际表名完全一致(比如你的表如果叫user_follows,就不能写followers)。
  • 方法名或语法错误:检查following()方法是否在User模型中正确定义,有没有拼写错误或者语法问题。

如果你的followers表字段命名不一样(比如用user_id和following_id),只需要对应调整外键参数就行,示例如下:

public function following()
{
    return $this->belongsToMany(User::class, 'followers', 'user_id', 'following_id');
}

内容的提问来源于stack exchange,提问作者Agil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:29:55