CakePHP Find 方法與 JOIN
CakePHP find 方法提供了一種從資料庫檢索資料的強大方法,包括連接表。本文示範了使用 CakePHP 的 find 方法執行 JOIN 查詢的兩種方法。
方法 1:利用模型關係
此方法涉及定義模型之間的關係並使用可遏制的行為。考慮以下模型關係:
class User extends AppModel {
public $hasMany = array('Message');
}
class Message extends AppModel {
public $belongsTo = array('User');
}
透過此設置,您可以從 MessagesController 執行以下查詢:
$this->Message->find('all', array(
'contain' => array('User'),
'conditions' => array(
'Message.to' => 4
),
'order' => 'Message.datetime DESC'
));
該查詢將取得所有收件者(to 欄位)為 4 的訊息,並且還將包含每個訊息對應的使用者資訊。
方法 2:自訂聯接語法
或者,您可以使用 CakePHP 的語法定義自訂聯接。當您需要對連線條件進行更多控制時,此方法適用:
$this->Message->find('all', array(
'joins' => array(
array(
'table' => 'users',
'alias' => 'UserJoin',
'type' => 'INNER',
'conditions' => array(
'UserJoin.id = Message.from'
)
)
),
'conditions' => array(
'Message.to' => 4
),
'fields' => array('UserJoin.*', 'Message.*'),
'order' => 'Message.datetime DESC'
));
請注意,在此範例中,您需要將欄位名稱 messages.from 變更為 messages.user_id 以符合 CakePHP 約定。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3