Doctrine 2 DQL - Zeilen auswählen, in denen ein Many-to-Many-Feld leer ist?

In diesem Beispiel habe ich zwei Klassen - DeliveryMethod und Country. Sie haben eine Beziehung von vielen zu vielen.

Ich möchte nur alle Versandmethoden auswählen, denen keine Länder zugeordnet sind.

Ich kann das Gegenteil tun, dh alle Versandmethoden auswählen, die mindestens ein Land haben -

<code>SELECT m FROM DeliveryMethod m JOIN m.countries
</code>

Aber ich kann nicht herausfinden, wie ich auswählen soll, wo das Länderfeld leer ist. In einfachem SQL würde ich Folgendes tun (deliverymethod_country ist die Verknüpfungstabelle):

<code>SELECT m.* FROM deliverymethods m
LEFT JOIN deliverymethod_country dc ON dc.deliverymethod_id = m.id
WHERE dc.deliverymethod_id IS NULL
</code>

Ein DQL-Äquivalent davon funktioniert jedoch nicht, zum Beispiel:

<code>SELECT m FROM DeliveryMethod m LEFT JOIN m.countries WHERE m.countries IS NULL
</code>

Was gibt mir diesen Fehler:

<code>[Syntax Error] line 0, col 75: Error: Expected end of string, got 'm'
</code>

Antworten auf die Frage(4)

Ihre Antwort auf die Frage