在CakePHP 中使用JOIN find 方法
要在CakePHP 2.x 中使用JOIN 從多個表格中擷取資料,可以使用兩種方法。
方法1:CakePHP方式(建議)
定義關係:使用belongsTohasyhasy關聯的關係。
使用查找方法:從您的MessagesController:
$this->Message->find('all', [ 'contain' => ['User'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
方法 2:自訂JOIN
手動定義join:直接在find中指定連接條件
$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' ]);
使用同一模型的兩個關係
要使用相同模型的兩個關係,您可以定義單獨的關係在您的模型中,例如:
class User { ... public $belongsTo = ['MessagesReceived', 'MessagesSent']; ... } class Message { ... public $belongsTo = ['UserFrom', 'UserTo']; ... }
然後,您可以將find 方法與適當的關係:
$this->Message->find('all', [ 'contain' => ['UserFrom'], 'conditions' => ['Message.to' => 4], 'order' => 'Message.datetime DESC' ]);
以上是如何透過 CakePHP 的 find 方法有效地使用 JOIN?的詳細內容。更多資訊請關注PHP中文網其他相關文章!