使用查询生成器获取最后 10 行并按另一列对它们进行排序

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

我有一张名为“发票”的表。它有 3 个字段。 id、createdAt 和金额。 我正在使用 Symfony PHP 框架进行开发。 我想创建一个查询生成器,它返回最后创建的 10 行并按数量对它们进行排序。

我可以使用查询生成器来实现此目的吗? 谢谢你

我试过这个

$invoices->orderBy('i.createdAt', 'DESC')
                ->addOrderBy('i.amount', 'ASC')
                ->setMaxResults(10);

但是这只能通过createdAt对它们进行排序。我猜我需要以不同的方式获取表中的最后 10 行,而不是使用 orderBy。

mysql symfony doctrine
1个回答
0
投票

我最近遇到了类似的情况(在多列上排序)。 这里提出两个解决方案:使用 Doctrine 按多列排序

您可以尝试使用两个

addOrderBy()
而不是
orderBy()
addOrderBy()
,例如:

$invoices->addOrderBy('i.createdAt', 'DESC')
                ->addOrderBy('i.amount', 'ASC')
                ->setMaxResults(10);

或者使用

add()
方法,例如:

$invoices->add('orderBy', 'i.createdAt DESC, i.amout ASC')->setMaxResults(10);

有关 add() 方法的信息:https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/query-builder.html#low-level-api

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