Heim >php教程 >php手册 >Zusammenfassung der Methoden zum Abfragen verwandter Tabellen in Cakephp

Zusammenfassung der Methoden zum Abfragen verwandter Tabellen in Cakephp

黄舟
黄舟Original
2016-12-20 09:35:072075Durchsuche

Wir können die folgenden Methoden verwenden, um

{Alle Informationen abzufragen, die das Schlüsselwort Schlüsselwort in der Notiz des angegebenen Benutzers enthalten🎜>

1. SQL-Anweisung

SELECT * FROM Users AS User
LEFT JOIN Notes AS Note ON User.id = Note.user_id
WHERE
User.id = {$user_id}
AND
Note.subject LIKE '%{keyword}%'
Dann führen wir diese SQL-Anweisung aus und verwenden die Abfragemethode des Modells

$data = $this->User->query($sql);
2. Verwenden Sie die Methoden bindModel() und unbindModel() des Modells

Anweisungen zu diesen beiden Methoden finden Sie unter Bitte beachten Sie


http://api.cakephp.org/class/model

Unser Ansatz ist

//重新绑定关联指定查询条件
 
$this->User->unbindModel('Note');
$this->User->bindModel(
    'hasMany' => array(
        'Note' => array(
            'conditions' => array(
                'Note.subject LIKE' => '%'.$keyword.'%'
            )
        )
    )
);
 
//指定主表条件获取数据
$data = $this->User->find('all',array(
    'conditions' => array(
        'User.id' => $user_id
    )
));
 
//或者
 
$data = $this->User->read(null,$user_id);
3 . Mit dem Kernverhalten (Behavior) Containable von Cakephp erstellen wir zunächst unsere eigene AppModel-Klasse und erstellen die Datei /app/app_model.php

Dann können wir sie im Controller übergeben So kann die Codeabfrage

class AppModel extends Model {
 
    //加载核心行为
    var $actsAs = array('Containable');
 
}

auch direkt in die Find-Anweisung geschrieben werden, ähnlich wie folgt:

$this->User->contain('Note.subject LIKE' => '%'.$keyword.'%');
 
$data = $this->User->find('all',array(
    'conditions' => array(
        'User.id' => $user_id
    )
));

Hinweis:

$data = $this->User->find('all',array(
    'conditions' => array(
        'User.id' => $user_id
    ),
    'contain' => array(
        'Note' => array(
            'conditions' => array(
                'Note.subject LIKE' => '%'.$keyword.'%'
            )
        )
    )
));
Wenn Sie eine Abfrage durchführen möchten {User.name oder Note.subject enthält alle Datensätze des Schlüsselworts keyword🎜>

Derzeit kann die Suchmethode von Cakephp diese Abfrage nicht implementieren und die oben eingeführte benutzerdefinierte SQL-Anweisung muss wie folgt verwendet werden:

Das Obige ist eine Zusammenfassung der Methode zum Abfragen von Assoziationstabellen in Cakephp. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).

SELECT *
FROM users AS User
LEFT JOIN notes AS Note ON User.id = Note.user_id
WHERE
User.name LIKE '%keyword%'
OR
Note.subject LIKE '%keyword%'


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn