symfony – So verwenden Sie leftJoin und Join in der Tabellenzuordnung in createQuery
習慣沉默
習慣沉默 2017-05-16 16:44:41
0
1
516

Die Beziehung zwischen den drei Tabellen

a oneToMany b
b oneToMany c

Zweck: Ich möchte alle A-Daten ohne C-Daten finden
Beispiel: Polizist Li (a) hat drei Waffen (b) jede Waffe hat Kugeln (c)
Was ich finden möchte, ist der Polizist ohne Kugeln. Fügen Sie die drei Waffen von Polizei Wang hinzu, zwei davon haben keine Kugeln, aber wenn eine Waffe Kugeln hat, dann wählen Sie ihn nicht. Ich möchte den Polizisten ohne Kugeln finden Kugeln. Also habe ich den folgenden Code geschrieben

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

Aber sie fanden auch den Polizisten Wang, den Polizisten mit einer Kugel in seiner Waffe.

So ändern Sie diesen Code.

習慣沉默
習慣沉默

Antworte allen(1)
黄舟

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

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage