如何通过推进多列来订购

时间:2011-01-03 12:38:11

标签: symfony-1.4 propel

我需要按2列对查询进行排序。这可能是使用推进器吗?

我试过了:

$c->addAscendingOrderByColumn(self::COL1);
$c->addAscendingOrderByColumn(self::COL2);

但第二次调用addAscendingOrderByColumn会覆盖第一个。

此致 拉杜。

2 个答案:

答案 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会将顺序添加到第一个。