Verwenden von JOIN in der CakePHP-Suchmethode
Um Daten aus mehreren Tabellen mithilfe von JOIN in CakePHP 2.x abzurufen, können zwei Methoden verwendet werden.
Methode 1: CakePHP Way (empfohlen)
Beziehungen definieren: Erstellen Sie Beziehungen zwischen Ihren Modellen mithilfe von „gehörtTo“- und „hasMany“-Zuordnungen.
Verwenden Sie die Suchmethode: Führen Sie die folgende Abfrage von Ihrem aus MessagesController:
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Methode 2: Benutzerdefinierte JOIN
Join manuell definieren: Geben Sie die Join-Bedingungen direkt in der Suche an Methode.
$this->Message->find('all', [ 'joins' => [ [ 'table' => 'users', 'alias' => 'UserJoin', 'type' => 'INNER', 'conditions' => ['UserJoin.id = Message.from'] ] ], 'conditions' => ['Message.to' => 4], 'fields' => ['UserJoin.*', 'Message.*'], 'order' => 'Message.datetime DESC' ]);
Verwenden von zwei Beziehungen zum selben Modell
Um zwei Beziehungen zum selben Modell zu verwenden, können Sie separate Beziehungen definieren in Ihren Modellen, wie zum Beispiel:
class User { ... public $belongsTo = ['MessagesReceived', 'MessagesSent']; ... } class Message { ... public $belongsTo = ['UserFrom', 'UserTo']; ... }
Dann können Sie die Find-Methode mit dem entsprechenden verwenden Beziehung:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Das obige ist der detaillierte Inhalt vonWie kann man JOINs mit der find-Methode von CakePHP effizient nutzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!