symfony - createQuery中表关联如何使用leftJoin和Join
習慣沉默
習慣沉默 2017-05-16 16:44:41
[PHP讨论组]

三张表之间的关系

a oneToMany b
b oneToMany c

目的: 我要找到没有c数据的所有 a数据
例子: 李警察(a) 有三把枪(b) 每把枪各有子弹(c)
我要找的就是没有子弹的警察. 加入王警察的三把枪, 两把没有子弹, 但有一把枪有子弹则不选择他. 我要找到没有任何子弹的警察.

所以我写了如下的代码

$em = $this->getDoctrine()->getManager();
        $qb = $em->createQueryBuilder();
        $qb->select('a', 'b')
                ->from('aaBundle:a', 'a')
                ->leftJoin('a.b', 'b')
                ->leftJoin('b.c', 'c')
                ->where('c.id is null');
        $query = $qb->getQuery();
        $result = $query->getArrayResult();

但是却把王警察 即 一把枪中有子弹的警察也找了出来.
这个代码如何修改呢.

習慣沉默
習慣沉默

全部回复(1)
黄舟

先找沒子彈的槍,再找有槍(槍有子彈的警察)的ID,再NOT IN

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号