Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Menggunakan JOIN dengan Kaedah cari CakePHP?
Menggunakan JOIN dalam Kaedah cari CakePHP
Untuk mendapatkan semula data daripada berbilang jadual menggunakan JOIN dalam CakePHP 2.x, dua kaedah boleh digunakan.
Kaedah 1: Cara CakePHP (disyorkan)
Tentukan perhubungan: Cipta perhubungan antara model anda menggunakan belongsTo dan hasMany persatuan.
Gunakan kaedah cari: Jalankan pertanyaan berikut daripada anda MessagesController:
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Kaedah 2: SERTAI Tersuai
Tentukan sambung secara manual: Nyatakan syarat sertai terus dalam carian kaedah.
$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' ]);
Menggunakan Dua Perhubungan kepada Model Yang Sama
Untuk menggunakan dua perhubungan kepada model yang sama, anda boleh menentukan perhubungan yang berasingan dalam model anda, seperti:
class User { ... public $belongsTo = ['MessagesReceived', 'MessagesSent']; ... } class Message { ... public $belongsTo = ['UserFrom', 'UserTo']; ... }
Kemudian, anda boleh menggunakan kaedah cari dengan yang sesuai perhubungan:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menggunakan JOIN dengan Kaedah cari CakePHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!