symfony - createQuery中表格關聯如何使用leftJoin和Join
習慣沉默
習慣沉默 2017-05-16 16:44:41
0
1
511

三張表之間的關係

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板