Атрибут сортировки по умолчанию для модели Doctrine

Мне было интересно, есть ли способ объявить заказ по умолчанию для моих моделей доктрины.

например

У меня есть work модель, и у меня есть photos . Когда я загружаю произведение, все связанные с ним фотографии загружаются в $work->photos . Когда я их показываю, они упорядочиваются по их идентификаторам.

Было бы очень удобно объявить заказ по умолчанию в другом поле или, возможно, переопределить поведение выборки.

Я бы предпочел не преобразовывать фотографии в массив и использовать usort. Благодарю.

Вы можете указать его в YAML следующим образом:

Если это сортировка для поля в самой таблице, добавьте:

 options: orderBy: fieldname 

где options: находятся на той же глубине, что и columns: или relations: запись. NB: капитализация orderBy: жизненно важна; сделайте это неправильно, и вы не получите никакой ошибки, но также не сортируете.

Если это порядок сортировки для отношений, то в рамках отношений вы можете пропустить options: часть и просто введите:

 orderBy: fieldname 

Хорошо, я обошел это благодаря этому сообщению: http://www.littlehart.net/atthekeyboard/2010/02/04/sorting-relationship-results-in-doctrine-1-2-2/

В моем случае файл BaseWork.php имел следующие модификации:

 public function setUp() { parent::setUp(); $this->hasMany('Photo as photos', array( 'local' => 'id', 'orderBy' => 'display_order', 'foreign' => 'work_id')); 

Во всяком случае, было бы лучше указать это в schema.yml, который я не мог сделать.

Я не знаю первой вещи о доктрине, но похоже, что вы можете указать предложение order by при вызове create ().

http://www.doctrine-project.org/documentation/manual/1_0/en/dql-doctrine-query-language:order-by-clause