Атрибут сортировки по умолчанию для модели Doctrine - PullRequest
9 голосов
/ 27 января 2011

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

например

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

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

Я бы не хотел преобразовывать фотографии в массив и использовать usort.Спасибо.

Ответы [ 3 ]

10 голосов
/ 28 января 2011

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

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

options:
  orderBy: fieldname

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

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

orderBy: fieldname
4 голосов
/ 27 января 2011

ОК, я обошел это благодаря этому посту: 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, что я не мог заставить работать.

0 голосов
/ 27 января 2011

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

http://www.doctrine -project.org / документация / ручной / 1_0 / а / DQL-доктрина-запросы язык: порядка по-п

...