2011-01-03 5 views
3

Ich muss eine Abfrage von 2 Spalten sortieren. Ist das mit dem Antrieb möglich?Wie durch mehrere Spalten mit Antrieb zu bestellen

i versucht:

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

aber der zweite Anruf an addAscendingOrderByColumn überschreibt die erste.

Grüße, Radu.

Antwort

5

Leider, wenn Sie Propel verwenden 1.4 (Symfony 1.4), so scheint es, dass Sie dort zu rohem SQL wechseln müssen ...

keine Antwort in dem (alten) Symfony Forum: http://oldforum.symfony-project.org/index.php/m/90447/

Seit Propel 1.5 sollte es jedoch mit der neuen Syntax (Doctrine style) arbeiten. Es ist nicht in Propel doc beschrieben, aber wenn ich das teste, funktioniert es (gibt ORDER BY author.name ASC, author.id DESC).

$authors = AuthorQuery::create() 
    ->orderByName() 
    ->orderById('desc') 
    ->find(); 

Vielleicht erwägen Sie ein Upgrade auf Propel 1.5.

5

ich mit diesem Problem zu kämpfen hatte und nach dem Lesen dieser Nachricht habe ich fast gab worden ... aber suddendly fand ich diese Lösung:

$criteria->addAscendingOrderByColumn(ClassPeer::COLUMN1)->addAscendingOrderByColumn(ClassPeer::COLUMN2); 

der zweite Aufruf von addAscendingOrderByColumn Auf diese Weise den Auftrag hinzufügen wird zum ersten.

+0

Diese Antwort sollte als korrekt markiert werden. – Agrest