首页 > 解决方案 > Symfony - 返回不相关的行

问题描述

我必须相关表:

一设备二用户

它们通过设备表中的 user_id 键连接。

我需要返回未添加到设备表中的用户表的所有结果。

因此,如果我在 users 表中有四个用户,在 device 表中有两个设备,第一个连接到 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();
}

也许问题是因为我需要返回设备表中不存在的结果,所以我没有条件?

有什么建议么?

标签: phpmysqlsymfonydoctrine-ormsymfony4

解决方案


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();
}

推荐阅读