[英]Laravel Eloquent - Table join
我有一个需要帮助的问题。 我正在做一个学习目的的项目。
我有2张桌子,第一个是
包含ID USERS(PK,AI),用户名,电子邮件,密码等...
另一个表叫做
朋友们
包含user_a(FK到users.id),user_b(FK到users.id),状态(0-待处理,1-已确认)...
假设当前登录用户的ID为1。
我需要加入这2个表并获取当前登录用户的完整朋友列表,因此查询低谷表朋友,其中user_a或user_b =当前登录的用户ID,并获取其朋友的所有数据(来自表用户)...这个:
user_a = 1,user_b = 2 userb_a = 3,user_b = 1
我需要获取用户2、3的信息。
希望您能理解我的需求。
顺便说一句,我知道如何不使用Eloquent,但是我需要使用Eloquent。
非常感谢!
您可以在Users和Friends Table之间形成hasMany()关系
在用户模型中,您必须编写
public function friends() {
return $this->hasMany('Friend','user_a');
}
从数据库中获取数据时。
$user = User::with('friends')->find($userId);
使用即时加载,您可以获取当前登录用户的所有朋友。
这是laravel中关系的链接
这是多对多关系,因此您需要belongsToMany
。
// basic setup
public function friends()
{
return $this->belongsToMany('User', 'friends', 'user_a', 'user_b')
->withPivot('confirmed');
}
但是,这还不是全部,因为您希望它是双向的。 这意味着您需要设置2个关系- 在这里您可以找到确切的解决方案:
试试看。 如果要给你想要的。 如果需要,请添加ID和电子邮件。
select u.username, f.status, uf.username as friendname
from users u
join friends f on
f.user_a = u.id or f.user_b = u.id
join users uf on
uf.id = f.user_a or uf.id = f.user_b
and uf.id != u.id
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.