Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyertai Jadual dengan Cekap dalam CakePHP menggunakan Kaedah Cari?
Menyertakan Jadual dengan Kaedah Cari CakePHP
Untuk mendapatkan semula data daripada berbilang jadual dengan kaedah cari CakePHP, pertimbangkan pilihan berikut:
Standard CakePHP Way
Jalinkan hubungan antara model anda menggunakan hartanah actsAs dan hasMany atau belongsTo. Contohnya:
class User extends AppModel { public $actsAs = ['Containable']; public $hasMany = ['Message']; } class Message extends AppModel { public $actsAs = ['Containable']; public $belongsTo = ['User']; }
Kemudian, gunakan gelagat yang boleh dibendung:
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Cantum Tersuai
Tentukan gabungan tersuai dalam kaedah pencarian anda :
$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 Hubungan yang Sama Model
Untuk mendapatkan semula data berdasarkan dua perhubungan dengan model yang sama, ubah suai model anda dan gunakan gelagat yang boleh dibendung:
class User extends AppModel { public $actsAs = ['Containable']; public $hasMany = ['MessagesSent' => ['className' => 'Message', 'foreignKey' => 'from']]; public $belongsTo = ['MessagesReceived' => ['className' => 'Message', 'foreignKey' => 'to']]; } class Message extends AppModel { public $actsAs = ['Containable']; public $belongsTo = ['UserFrom' => ['className' => 'User', 'foreignKey' => 'from']]; public $hasMany = ['UserTo' => ['className' => 'User', 'foreignKey' => 'to']]; }
Cari panggilan:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Jadual dengan Cekap dalam CakePHP menggunakan Kaedah Cari?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!