Доктрина 2.1: Как упорядочить совокупное поле в коллекции? - PullRequest
6 голосов
/ 07 марта 2012

У меня есть объект с полем ArrayCollection. В аннотации могу написать

@ORM\OrderBy({"somefield" = "DESC"})

и коллекция, которую я получу от этого лица, будет автоматически заказана.

У меня вопрос, можно ли заказать по совокупным полям?

Моя текущая проблема: у меня есть 2 поля в сущности коллекции: visited и shown. Я хочу отсортировать коллекцию по рейтинговому индексу, который равен: visited / shown. Я попытался написать это в аннотациях, но там написано, что это должно быть допустимое поле. Я знаю, как это сделать с помощью DQL, но я не знаю, как воссоздать его в объявлении сущности с аннотациями.

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 01 июня 2012

Не совсем уверен, что я понимаю вашу проблему.Но что дает

@ORM/OrderBy({"visited" = "DESC", "shown" = "DESC"})

в качестве результата?

С http://docs.doctrine -project.org / projects / doctrine-orm / en / latest /reference / annotations-reference.html # annref-orderby :

Фрагмент DQL в OrderBy может состоять только из неквалифицированных имен без кавычек и необязательного позиционного оператора ASC / DESC.Несколько полей разделяются запятой (,).Указанные имена полей должны существовать в классе targetEntity аннотации @ManyToMany или @OneToMany.

1 голос
/ 02 апреля 2014

Вам нужна математическая операция в операторе ORDER BY - в SQL это будет ORDER BY посещение / показ DESC.Я думаю, что это невозможно сделать в аннотациях.

...