MySQL 的 FOUND_ROWS() 方法的 DQL 等效项是什么?
是否有任何方法或技术可以从 select
查询中获取结果数,就好像它是在没有使用 DQL 的 limit
子句的情况下运行的一样?此行为是否类似于在 MySQL 中使用 SQL_CALC_FOUND_ROWS
和 FOUND_ROWS()
?
Is there any method or technique for getting the number of results from a select
query as if it had been run without a limit
clause using DQL? This behavior would be similar to using SQL_CALC_FOUND_ROWS
and FOUND_ROWS()
in MySQL?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的。 低于 2.2 的 Doctrine 版本有Paginator 扩展。 从版本 2.2 开始 Doctrine 附带一个 Paginator< /a> 用于开箱即用的 DQL 查询。
对于 Doctrine(或其他 DBAL)来说,使用非标准数据库功能(例如 SQL_CALC_FOUND_ROWS)并不是一个好的做法。 Doctrine 向用户隐藏所有依赖于数据库的情况。因此,除非 SQL_CALC_FOUND_ROWS 不是跨数据库 SQL 的一部分,否则您不能考虑将 SQL_CALC_FOUND_ROWS 与 Doctrine 一起使用。
Yes, it is. There is Paginator extension for Doctrine versions lower than 2.2. Starting with version 2.2 Doctrine ships with a Paginator for DQL queries out of the box.
Using non-standard DB features (like
SQL_CALC_FOUND_ROWS
) is not good practice with Doctrine (or other DBAL). Doctrine hides all DB-dependent circumstances from user. So you can't think about usingSQL_CALC_FOUND_ROWS
with Doctrine until it's not a part of cross-database SQL.