Symfony 2: LIMIT doctrine LEFT JOIN
у меня есть вопрос о левом присоединении в доктрине в Symfony 2.7.
Пример кода:
public function test($id, $offset, $limit) { $build = $this->createQueryBuilder('building'); $build ->addSelect('users', 'numbers') ->join('building.users', 'users') // limit the numbers for 1 result! ->leftJoin('building.numbers', 'numbers') // only select 1 result instead of more. ->where('building.id = :id') ->setParameter('id', $id); $paginator = new Paginator($build->getQuery(), $fetchJoinCollection = true); $result = $paginator->getQuery() ->setFirstResult($offset) ->setMaxResults($limit) ->getResult(); return $result; }
Теперь мой вопрос заключается в том, как мы могли бы реализовать, что ->leftJoin('building.numbers', 'numbers') возвращает только максимум 1 результат.
Спасибо!
Доктрина orm: 2.2.3, версия Symfony: 2.7
Что я уже пробовал:
public function test($id, $offset, $limit) { $build = $this->createQueryBuilder('building'); $build ->addSelect('users', 'numbers') ->join('building.users', 'users') // limit the numbers for 1 result! ->leftJoin('building.numbers', 'numbers') // only select 1 result instead of more. ->where('building.id = :id') ->setParameter('id', $id); $paginator = new Paginator($build->getQuery(), $fetchJoinCollection = true); $result = $paginator->getQuery() ->setFirstResult($offset) ->setMaxResults($limit) ->getResult(); return $result; }
Maciej Los
Я не эксперт по Symfony, но, похоже, вы хотите присоединиться к более чем 1 таблице. Вы должны определить спецификацию соединения для каждой таблицы. Видеть: в Symfony - микширование левого объединить результаты в MySQL учение - переполнение стека[^]
Подробнее о доктринах вы найдете здесь: Как работать с ассоциациями / отношениями доктрины (Symfony Docs)[^]