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!