给出以下模式:
user
- id
- username
friends
- user_id
- friend_id
places
- id
- name
place_user
- user_id
- place_id
用户通过Friends pivot与他们自己拥有ManyToMany关系。
地方通过place_user
与用户建立了许多关系如何让所有Places
与User
和User's Friends
相关联?
假设我们正在使用用户1,在原始SQL中,我可以获得与该用户的Places
相关联的所有Friends
:
Select places.place from places
inner join place_user on place_user.place_id = places.id
inner join friends on friends.friend_id = place_user.user_id
inner join users on users.id = place_user.user_id
where friends.user_id = 1
我可以获得与Places
相关联的所有User
:
Select places.place from places
left join place_user on place_user.place_id = places.id
left join users on users.id = place_user.user_id
where users.id = 1
但是如何将其组合成一个查询,而且使用Eloquent?
编辑:显然我可以做这两个查询的联盟,但我想知道是否有更简洁的东西,也许在Eloquent中更简洁