MySQL + 带分页器限制的 symphony querybuilder:实体数量错误

问题描述 投票:0回答:1

我的数据库:MySQL 项目:Symfony 6

表结构: 1 篇文章可能有很多评论 每篇文章必须有1篇文章。

步骤:

1 - I can list my articles filtered by user roles.

2 - I can list my articles and their comments.

3 - I can use a paginator.

问题:但是当 1 篇文章在第一个版本的查询中得到 2 条评论时,分页器的限制在两行中得到 2 行包含相同文章,第一条评论在第 1 行,第二条评论在第 2 行。 所以我的第一页只包含有两条评论的第一篇文章,而不是包含所有评论的两篇文章。

所以我需要使用子查询。 问题:对于 MySQL,我们不能在子查询中使用限制。 解决方法是改用 inner join ...

现在我设法创建了一个(我认为可行的)查询:

SELECT *
FROM article AS a
INNER JOIN (
  SELECT id AS requestedId
  FROM article
  WHERE role_requis = 'PUBLIC_ACCESS'
  ORDER BY requestedId ASC
  LIMIT 2 OFFSET 1
) AS article
ON article.requestedId = a.id
LEFT JOIN comment
ON comment.article_id = article.requestedId;

但是从你那里,有什么办法可以缩短时间吗? 如果不是,我正在努力将此查询转换为 symfony querybuilder 或 dql ......即使有文档。

如果您回答并尝试提供帮助,谢谢

mysql symfony query-builder dql paginator
1个回答
0
投票

如果您想在查询中获得一篇文章和一条评论,那么准备一个基于您的

Article
实体的查询并将其与
Comment
实体结合起来。然后您可以创建自定义 DQL 函数以在查询中使用以仅获取 1 条评论记录。实际配置请看这篇中篇博客

© www.soinside.com 2019 - 2024. All rights reserved.