按关系项筛选结果

时间:2017-12-01 05:41:19

标签: php mysql sql laravel eloquent

我有一个基本的身份验证管理。

基本上我有3张桌子:

users (App\User)
+ id
+ email
+ pass


groups (App\Group)
+ id
+ name

user_groups (App\UserGroup)
+ id
+ user_id
+ group_id

很可能中间表是" user_group"表。 有了这个,我有一个非常容易的帖子系统与"组" :

posts (App\Post)
+ id 
+ name
+ content

post_groups (App\PostGroup)
+ id
+ post_id
+ group_id

我想让用户只看到没有" group"的帖子或仅当用户拥有相关的帖子组时。

Laravel Eloquent或SQL是否合适?例如:

Posts::where(... logic here ...)

感谢。

1 个答案:

答案 0 :(得分:0)

如果您为帖子和群组设置了雄辩的关系,则可以获得没有群组关系的帖子,如下所示: Posts::hasNot('group')->get();

要获取用户拥有该组的帖子,您可以创建高级where子句或执行联接以过滤掉您的查询结果。

类似的东西:

Posts::has('group')->whereIn('group.user', Auth::user()->id);

https://laravel.com/docs/5.5/queries