Мне было интересно, есть ли способ объявить заказ по умолчанию для моих моделей доктрины.
например
У меня есть 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 ().