Frage

Lassen Sie uns sagen, ich habe drei Modelle:. Benutzer, Region, Land

User belongsTo Region
Region belongsTo Country

Jedes dieser Modelle wird mit dem Contain Verhalten. Ich versuche, Benutzer aus dem Land mit dem Code ‚US‘ zu finden. Hier ist, was ich bin versucht:

$users = $this->User->find('all', array(
    'conditions' => array('Country.code' => 'US'),
    'contain'    => array('Region.Country'),
));

CakePHP trennt diese in zwei Abfragen:

  1. Erstens, es ist die Auswahl der IDs für alle Länder mit Code ‚US‘.
  2. Dann wird diese IDs mit allen Benutzern Regionen SELECT Joining wo region.country_id in dieser Liste von zuvor abgerufenen Land IDs ist.

Als Ergebnis habe ich am Ende mit SQL-Fehler in meiner app, da mein conditions Array einen Verweis auf Country.code enthält, und die zweite Abfrage, die Kuchen baut nicht JOIN Ländern.

Die beste Kuchen Lösung, die ich sehe, ist eine Unterabfrage zu bauen, wie in der

Andere Tipps

Setzen Sie die Bedingungen in der auch enthalten. Z. B:

$users = $this->User->find('all', array('contain' => array(
    'Region' => array(
        'Country' => array(
            'conditions' => array('Country.code' => 'US'),
        ),
    ),
)));

Sehen Sie das zweite bis zum vorletzten Beispiel in der Contain Handbuch

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top