У меня есть 2 объекта в отношении ManyToOne. ScheduledEvent и Tariff.
Первым лицом является ScheduledEvent с полевым тарифом, где тариф является отношением ManyToOne. И я сконфигурировал его так в объекте ScheduledEvent:
/**
*
* @ORM\ManyToOne(targetEntity="Tariff", inversedBy="scheduledEvents")
* @ORM\JoinColumn(name="tariff_id", referencedColumnName="id")
**/
private $tariff;
И объект тарифа, который имеет поля "name" и "scheduleEvents", настроенные следующим образом:
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
*
* @ORM\OneToMany(targetEntity="ScheduledEvent", mappedBy="tariff")
*/
private $scheduledEvents;
Возможно ли настроить объект ScheduledEvent в аннотации или каким-либо другим способом, чтобы при выборе записей из объекта ScheduledEvent я сортировал по столбцу "Название тарифа".
Так, например, когда я строю запрос следующим образом:
$repository = $em->getRepository('SMAPIBundle:ScheduledEvent');
$repository->createQueryBuilder('sce')
->setFirstResult(0)
->setMaxResults(10)
->orderBy('sce.tariff', $sortColumnOrder);
Я хочу, чтобы он мог рассказать ему только сортировать по тарифу, но настроить его сортировать по столбцу имени тарифа вместо id, когда я сортирую записи ScheduledEvent по тарифу.
Это возможно?
Я знаю, где Аннотации OrderBy:
/**
*
* @ORM\ManyToOne(targetEntity="Tariff", inversedBy="scheduledEvents")
* @ORM\JoinColumn(name="tariff_id", referencedColumnName="id")
* @ORM\OrderBy("name")
**/
private $tariff;
Но это используется только для отношений ManyToMany и OneToMany.
Итак, любые идеи о том, как сортировать по полю отношения, используя столбцы полей отношений при извлечении записей для объекта?
Я использую Doctrine 2.4.6.
Вы можете сделать это, если сначала присоединитесь к tariff
:
$repository = $em->getRepository('SMAPIBundle:ScheduledEvent');
$repository->createQueryBuilder('sce')
->leftJoin('sce.tariff', 't')
->setFirstResult(0)
->setMaxResults(10)
->orderBy('t.name', $sortColumnOrder);
t.name
является строкой. Сделайте это переменной.