【问题标题】:Filter results by relation items按关系项过滤结果
【发布时间】:2018-05-15 04:46:42
【问题描述】:

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

基本上我有 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

我想让用户只看到没有“组”的帖子,或者只有当用户有相关的帖子组时。

Laravel Eloquent 或 SQL 有可能吗?例如:

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

谢谢。

【问题讨论】:

  • 检查 Laravel 中 whereHas 的文档
  • 你试过什么??

标签: php mysql sql laravel eloquent


【解决方案1】:

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

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

类似:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 2021-11-15
    • 2019-10-14
    • 2016-03-14
    • 1970-01-01
    相关资源
    最近更新 更多