Я не могу упорядочить записи по атрибуту из другой сущности.
У меня есть класс Employee, у которого есть атрибут $ user, который указывает на класс User, у которого есть атрибут $ active.
Теперь я хочу отсортировать Employee по user.active , и я не могу этого сделать.Вот как я называю их:
/**
* @param Criteria $criteria
* @param array $order_by
* @param integer $limit
* @param integer $offset
* @return \Doctrine\Common\Collections\Collection
*/
public function findByCriteria($criteria, $order_by = null, $limit = null, $offset = null) {
$criteria->setFirstResult($offset);
$criteria->setMaxResults($limit);
$criteria->orderBy($order_by);
$result = $this->repository->matching($criteria);
return $result;
}
Я проверил BaseEntityPersister.php, и похоже, что нет реализации такой вещи.Он просто проверяет, является ли user.active атрибутом класса Employee, и выдает
Doctrine\ORM\ORMException
Unrecognized field: user.active
. Я знаю, что могу сделать это с помощью QueryBuilder и объединений, но я хочу сделать свой код более пригодным для повторного использования, а критерии кажутся хорошими.Выбор.
Спасибо за советы!
РЕДАКТИРОВАТЬ:
Если я использую findBy , проблем с полем сортировки user нет.active .Должен ли я считать это ограничением соответствия метода?Это печально, потому что мне нужно использовать Doctrine \ Common \ Collections \ Criteria.Я могу использовать findBy с порядком, а затем использовать соответствующий метод для фильтрации записей, но я бы предпочел сделать это на стороне базы данных.
РЕДАКТИРОВАТЬ 2:
Я использую Nette с Kdyby / Doctrine.Не знал, что user.active реализован в Kdyby / doctrine, а не в Doctrine напрямую.Поэтому я полагаю, что на этот вопрос не будет ответа ..