Member 13663892 Ответов: 0

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)[^]

0 Ответов