在 CakePHP 中使用 JOIN find 方法
要在 CakePHP 2.x 中使用 JOIN 从多个表中检索数据,可以使用两种方法。
方法1:CakePHP方式(推荐)
定义关系:使用belongsTo和hasMany关联创建模型之间的关系。
使用查找方法:从您的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中文网其他相关文章!