Атрибут сортировки по умолчанию для модели Doctrine
мне было интересно, есть ли способ объявить порядок по умолчанию для моих моделей доктрины.
например
у меня есть work
модель и она имеет photos
. Когда я загружаю работу, все связанные с ней фотографии загружаются в $work->photos
. Когда я показываю их, они упорядочиваются по их идентификаторам.
было бы очень удобно объявить порядок по умолчанию в другом поле или, возможно, переопределить поведение выборки altoghether.
Я бы предпочел не преобразовывать фотографии в массив и использовать usort. Спасибо.
3 ответов
вы можете указать его в 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'));
во всяком случае, было бы лучше указать это в схеме.yml, который я не мог заставить работать.
Я не знаю первое о доктрине, но похоже, что вы можете указать предложение order by при вызове create().