【发布时间】:2021-02-11 14:02:41
【问题描述】:
我有三个表,第一个是 posts 表,第二个是 post_users 表和 users。
post_users 表包含帖子的标记用户。它有post_id 和user_id 列。
下面是我的工作代码:
DB::table('posts')
->select(
'posts.id AS post_id',
'posts.likes AS post_likes',
'post_user.user_id AS tagged_users'
)
->join('post_user', 'post_user.post_id', 'posts.id')
->orderBy('posts.created_at', 'DESC')
->get();
【问题讨论】:
-
> 'post_user.user_id AS tagged_users' 直接从没有聚合的连接表中选择一个 ID 会导致基于该连接匹配的重复。我将使用 2 个单独的简单快速查询来实现。第一个,但只是从枢轴和第二个聚合用户 ID,以获取所有用户,所有用户在第一个收集的用户 ID。之后,您只需对帖子进行 1 次循环,即可根据第二次的结果映射用户。
-
@Svetoslav 所以不可能在一个查询中实现这一点。先生,您能在下面分享您建议的答案代码吗?如果有帮助,我可以接受。
-
为什么不用雄辩的关系,可以用
with()的方法。 -
@No.The.Hi 先生,您能告诉我如何以 Eloquent 的方式进行操作吗?这也是我切换到查询生成器的原因。
标签: laravel eloquent laravel-query-builder