繁体   English   中英

Laravel Eloquent-表联接

[英]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中关系的链接

http://laravel.com/docs/eloquent#relationships

这是多对多关系,因此您需要belongsToMany

// basic setup
public function friends()
{
    return $this->belongsToMany('User', 'friends', 'user_a', 'user_b')
      ->withPivot('confirmed');
}

但是,这还不是全部,因为您希望它是双向的。 这意味着您需要设置2个关系- 在这里您可以找到确切的解决方案:

Laravel的友谊系统:多对多关系

试试看。 如果要给你想要的。 如果需要,请添加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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM