Атрибут сортировки по умолчанию для модели 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().

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