suchen

Heim  >  Fragen und Antworten  >  Hauptteil

symfony – So verwenden Sie leftJoin und Join in der Tabellenzuordnung in createQuery

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.

習慣沉默習慣沉默2755 Tage vor501

Antworte allen(1)Ich werde antworten

  • 黄舟

    黄舟2017-05-16 16:46:41

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

    Antwort
    0
  • StornierenAntwort