【发布时间】:2011-01-03 12:38:10
【问题描述】:
我需要按 2 列对查询进行排序。使用 propel 可以吗?
我试过了:
$c->addAscendingOrderByColumn(self::COL1);
$c->addAscendingOrderByColumn(self::COL2);
但是对 addAscendingOrderByColumn 的第二次调用会覆盖第一次调用。
问候, 拉杜。
【问题讨论】:
标签: symfony-1.4 propel
我需要按 2 列对查询进行排序。使用 propel 可以吗?
我试过了:
$c->addAscendingOrderByColumn(self::COL1);
$c->addAscendingOrderByColumn(self::COL2);
但是对 addAscendingOrderByColumn 的第二次调用会覆盖第一次调用。
问候, 拉杜。
【问题讨论】:
标签: symfony-1.4 propel
我一直在努力解决这个问题,在阅读了这篇文章后,我几乎要放弃了......但突然我找到了这个解决方案:
$criteria->addAscendingOrderByColumn(ClassPeer::COLUMN1)->addAscendingOrderByColumn(ClassPeer::COLUMN2);
这样,第二次调用 addAscendingOrderByColumn 会将订单添加到第一次。
【讨论】:
不幸的是,如果您使用的是 Propel 1.4 (Symfony 1.4),您似乎必须在此处切换到原始 SQL...
(旧)Symfony 论坛中没有答案:http://oldforum.symfony-project.org/index.php/m/90447/
但是,从 Propel 1.5 开始,它应该使用新的语法(Doctrine 风格)。 Propel 文档中没有详细说明,但是当我对此进行测试时,它可以工作(给出ORDER BY author.name ASC, author.id DESC)。
$authors = AuthorQuery::create()
->orderByName()
->orderById('desc')
->find();
也许考虑升级到 Propel 1.5。
【讨论】: