CakePHP-Suchmethode mit JOIN
Die CakePHP-Suchmethode bietet eine leistungsstarke Möglichkeit, Daten aus der Datenbank abzurufen, einschließlich der Verknüpfung von Tabellen. In diesem Artikel werden zwei Methoden zum Durchführen einer JOIN-Abfrage mithilfe der Suchmethode von CakePHP veranschaulicht.
Methode 1: Modellbeziehungen nutzen
Diese Methode beinhaltet das Definieren von Beziehungen zwischen Ihren Modellen und die Verwendung von beherrschbares Verhalten. Berücksichtigen Sie die folgenden Modellbeziehungen:
class User extends AppModel {
public $hasMany = array('Message');
}
class Message extends AppModel {
public $belongsTo = array('User');
}
Mit diesem Setup können Sie die folgende Abfrage vom MessagesController aus durchführen:
$this->Message->find('all', array(
'contain' => array('User'),
'conditions' => array(
'Message.to' => 4
),
'order' => 'Message.datetime DESC'
));
Diese Abfrage ruft alle Nachrichten ab, deren Empfängerfeld (an) 4 ist, und enthält außerdem die entsprechenden Benutzerinformationen für jede Nachricht.
Methode 2: Benutzerdefinierte Join-Syntax
Alternativ können Sie benutzerdefinierte Joins mithilfe der CakePHP-Syntax definieren. Dieser Ansatz eignet sich, wenn Sie mehr Kontrolle über die Join-Bedingungen benötigen:
$this->Message->find('all', array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'UserJoin',
'type' => 'INNER',
'conditions' => array(
'UserJoin.id = Message.from'
)
)
),
'conditions' => array(
'Message.to' => 4
),
'fields' => array('UserJoin.*', 'Message.*'),
'order' => 'Message.datetime DESC'
));
Beachten Sie, dass Sie in diesem Beispiel den Feldnamen „messages.from“ in „messages.user_id“ ändern müssten, um der CakePHP-Konvention zu entsprechen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3