我有一张名为“发票”的表。它有 3 个字段。 id、createdAt 和金额。 我正在使用 Symfony PHP 框架进行开发。 我想创建一个查询生成器,它返回最后创建的 10 行并按数量对它们进行排序。
我可以使用查询生成器来实现此目的吗? 谢谢你
我试过这个
$invoices->orderBy('i.createdAt', 'DESC')
->addOrderBy('i.amount', 'ASC')
->setMaxResults(10);
但是这只能通过createdAt对它们进行排序。我猜我需要以不同的方式获取表中的最后 10 行,而不是使用 orderBy。
我最近遇到了类似的情况(在多列上排序)。 这里提出两个解决方案:使用 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