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!