我需要按2列对查询进行排序。这可能是使用推进器吗?
我试过了:
$c->addAscendingOrderByColumn(self::COL1);
$c->addAscendingOrderByColumn(self::COL2);
但第二次调用addAscendingOrderByColumn会覆盖第一个。
此致 拉杜。
答案 0 :(得分:5)
不幸的是,如果您使用的是Propel 1.4(Symfony 1.4),那么您似乎必须切换到原始SQL ...
(旧的)Symfony论坛中没有答案:http://oldforum.symfony-project.org/index.php/m/90447/
但是,从Propel 1.5开始,它应该使用新的语法(Doctrine样式)。它在Propel doc中没有详细说明,但是当我测试它时,它可以工作(给出ORDER BY author.name ASC, author.id DESC
)。
$authors = AuthorQuery::create()
->orderByName()
->orderById('desc')
->find();
也许考虑升级到Propel 1.5。
答案 1 :(得分:5)
我正在努力解决这个问题,看完这篇文章后我几乎已经放弃了......但是我发现了这个解决方案:
$criteria->addAscendingOrderByColumn(ClassPeer::COLUMN1)->addAscendingOrderByColumn(ClassPeer::COLUMN2);
这样,第二次调用addAscendingOrderByColumn会将顺序添加到第一个。