如何通过推进多列来订购

Rad*_*mir 3 propel symfony-1.4

我需要按2列对查询进行排序.这是否可以使用推进?

我试过了:

$c->addAscendingOrderByColumn(self::COL1);
$c->addAscendingOrderByColumn(self::COL2);
Run Code Online (Sandbox Code Playgroud)

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

此致,Radu.

Fro*_*y Z 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();
Run Code Online (Sandbox Code Playgroud)

也许考虑升级到Propel 1.5.


mac*_*ver 5

我正在努力解决这个问题,看完这篇文章后,我几乎放弃了......但是我发现了这个解决方案:

$criteria->addAscendingOrderByColumn(ClassPeer::COLUMN1)->addAscendingOrderByColumn(ClassPeer::COLUMN2);
Run Code Online (Sandbox Code Playgroud)

这样,对addAscendingOrderByColumn的第二次调用将把顺序添加到第一个.