Doctrine orm 使用NOT IN子句和QueryBuilder进行左连接
我正在尝试将查询转换为DQL或使用查询生成器构建ir。 我可以通过以下查询成功检索数据库中的结果:Doctrine orm 使用NOT IN子句和QueryBuilder进行左连接,doctrine-orm,query-builder,dql,Doctrine Orm,Query Builder,Dql,我正在尝试将查询转换为DQL或使用查询生成器构建ir。 我可以通过以下查询成功检索数据库中的结果: SELECT * FROM flag left join countries on flag.id = countries.flag where countries.flag IS NULL 现在,我需要将其转换为DQL或使用queryBuilder构建它。 我的实体是国家和国旗。实体国家/地区作为字段标志作为外部id 到目前为止,我得到了以下代码: $qb = $em->create
SELECT * FROM flag
left join countries
on flag.id = countries.flag
where countries.flag IS NULL
现在,我需要将其转换为DQL或使用queryBuilder构建它。
我的实体是国家和国旗。实体国家/地区作为字段标志作为外部id
到目前为止,我得到了以下代码:
$qb = $em->createQueryBuilder();
$available =
$qb
->select('f')
->from('Flag', 'f')
->leftJoin('Countries', 'c', 'ON', 'c.flag = f.id')
->where('f.id IS NULL');
我的$available没有返回任何东西。
这个QueryBuilder怎么了
谢谢。您还需要实际执行查询:
$result = $qb->getQuery()->execute();
这将为您提供结果。您还需要实际执行查询:
$result = $qb->getQuery()->execute();
where('f.id IS NULL');
这应该会给你结果
where('f.id IS NULL');
这是错误的
应该是
where('c.flag IS NULL');
这是错误的
应该是
where('c.flag IS NULL');
谢谢你的帮助
两个答案都是正确的。这是最后的代码,以防其他人搜索。
此外,我还必须将“ON”替换为“with”
$available =
$qb
->select('f')
->from('Flag', 'f')
->leftJoin('Countries', 'c', 'WITH', 'c.flag = f.id')
->where('c.flag IS NULL');
$flags = $qb->getQuery()->execute();
谢谢你的帮助
两个答案都是正确的。这是最后的代码,以防其他人搜索。
此外,我还必须将“ON”替换为“with”
$available =
$qb
->select('f')
->from('Flag', 'f')
->leftJoin('Countries', 'c', 'WITH', 'c.flag = f.id')
->where('c.flag IS NULL');
$flags = $qb->getQuery()->execute();