getArrayResult für eine Entität mit ManyToOne-Verknüpfung

8

Die folgenden Basistabellen haben (1: n-Beziehung)
Client - Hat viele Benutzer.
Benutzer - Jeder Benutzer gehört zu einem einzelnen Client.

In einem sehr einfachen Beispiel, wenn ich die Benutzereinheit abfrage (Querybuilder) mit getArrayResult() sehe ich folgendes:

  1. Das tatsächlich generierte SQL enthält das zu erhaltende Fremdschlüsselfeld zurückgegeben (d. h. ClientID)
  2. Das tatsächlich zurückgegebene Datenarray enthält NICHT den Fremdschlüssel Feld.

In diesem Stadium muss ich keine fremden Daten zurückgeben und brauche sie nicht um mit der zugehörigen Tabelle zu verbinden.

Also ist die Frage ...
Was oder wie gebe ich den Fremdschlüsselwert in meinem Array zurück?

Abfrage ist:

%Vor%

SQL ist:

%Vor%     
MarkOfSine 30.03.2011, 11:50
quelle

2 Antworten

16

Versuchen Sie, den HINT_INCLUDE_META_COLUMNS Query-Hinweis für die Abfrage (nicht für den Builder) festzulegen, bevor Sie ihn ausführen.

%Vor%     
romanb 01.04.2011, 22:24
quelle
0

Soweit ich weiß, können Sie dies nicht tun, weil ClientID keine Eigenschaft des Benutzers ist. Der Benutzer hat eine Eigenschaft wie $ client und diese Client-Entität hat eine $ id.

Das verwirrt Sie, weil Sie mit Entitäten arbeiten, aber Sie denken immer noch in SQL.

Die Lösung, obwohl etwas weniger effizient, wäre wahrscheinlich, die Entität Client in Ihre DQL-Abfrage zu verbinden, und dann $results[N]['client']['id'] (oder ähnlich, ich bin nicht vertraut mit getResultArray ())

    
timdev 31.03.2011 17:54
quelle

Tags und Links