Как сделать заказ по нескольким колонкам с пропеллом - PullRequest
3 голосов
/ 03 января 2011

Мне нужно отсортировать запрос по 2 столбцам.Возможно ли это с помощью propel?

я пробовал:

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

, но второй вызов addAscendingOrderByColumn отменяет первый.

С уважением, Раду.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2011

Я боролся с этой проблемой, и после прочтения этого поста я почти сдался ... но внезапно я нашел это решение:

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

Таким образом, второй вызов addAscendingOrderByColumn добавит ордер к первому.

5 голосов
/ 04 января 2011

К сожалению, если вы используете Propel 1.4 (Symfony 1.4), вам, вероятно, придется переключиться на raw 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.

...