2016-09-05 4 views
0

Ich habe 3 Tabellen in der Datenbank: CakePHP 3.CakePHP Datenbank Verbände

Cars{id, type_id,....} 
Types{id, name,....} 
Images{id, type_name,image_url,....} 

Und in Modellautos Ich mag würde Bezug auf Bilder setzen, tatsächlich Modell Verbände. Ich muss image_url von Bildern abrufen, mit Wert type_id, der in der Tabelle Autos und in der Tabelle Images gleich ist. Es bedeutet, dass ich Tabellentypen vergessen kann. Jetzt hole ich Bilder mit Join Abfrage vom Controller, aber ich möchte diese Modelle zuordnen.

Abfrage in der Steuerung wie folgt aussieht:

$query->join(['table' = 'Images', 
'alias' => 'i', 
'conditions' => 'Cars.type_id = i.type_id' 
]); 

Dies ist Beziehung Typ: 1 car Bilder haben 1 oder mehr und 1 Bild kann auf 1 oder viele Autos gehören. Es bedeutet M: M. Es sollte Relation gehörenToMany. Ich versuche, verschiedene ralations Option, von hasMany zu belongsToMany funktioniert es nicht. Ist es möglich, dies überhaupt zu tun, oder es ist vielleicht nicht, weil eine Tabelle nicht Primärschlüssel eines anderen enthält, und ich bin gezwungen, Join-Abfrage in Controller zu verwenden?

Danke für Ihren Rat.

Antwort

0

hinzugefügt enthalten mit "Rekursion" in Abfrage:

$query->contain(['Cars','Types' => ['Images']]); 

und ich bekommen, was ich brauchte. mit freundlichen Grüßen