Symfony - вернуть несвязанные строки - PullRequest
0 голосов
/ 14 января 2020

У меня есть к связанным таблицам:

Один - устройство Два - пользователь

Они связаны ключом user_id в таблице устройств.

Мне нужно вернуть все таблица результатов пользователей, которые не добавлены в таблицу устройств.

Итак, если у меня в таблице пользователей четыре пользователя и два устройства в таблице устройств, и первое из них подключено к user_1, а второе к user_2, результат вернет двух других пользователей. ,

Я думаю, что это можно сделать с помощью leftJoin (), но я получаю пустой результат массива.

Код:

public function getUsersWithNoDevices()
{
    return $this->getDeviceRepository()
        ->createQueryBuilder('d')
        ->select('d', 'u')
        ->from(User::class, 'u')
        ->where('d.user IS NULL')
        ->setMaxResults(1)
        ->getQuery()
        ->getResult();
}

Возможно, проблема в том, что я выполняю условие NOT IN как мне нужно вернуть результаты, которых нет в таблице устройств?

Есть предложения?

Ответы [ 2 ]

1 голос
/ 14 января 2020
public function getUsersWithNoDevices()
{
    $qb = $this->entityManager->createQueryBuilder();
    $qb
        ->select('d', 'u')
        ->from('user', 'u')
        ->leftJoin('u.device', 'd')
        ->where('d.user IS NULL');

    return $qb->getQuery()->getResult();
}
0 голосов
/ 14 января 2020

Наконец, это было:

return $this->getUserRepository()
        ->createQueryBuilder('u')
        ->select('u')
        ->leftJoin('u.device', 'd')
        ->where('d.user IS NULL')
        ->setMaxResults(1)
        ->getQuery()
        ->getResult();
...