假设我有3个型号。
这是我的模型php文件。
class User extends AppModel {
public $hasOne = 'Applicant';
}
class Applicant extends AppModel {
public $belongsTo = array('User', 'Position');
}
class Position extends AppModel {
public $hasMany = 'Applicant';
}
这是我的UsersController.php
class UsersController extedns AppController {
public function index() {
$this->User->find('all');
{
}
当执行/ users / index时,我在SQL转储上获得了SQL语句,如下所示。
select *
from users
left outer join applicants
on users.id = applicants.user_id
但这就是我的需要。
select *
from users
left outer join applicants
on users.id = applicants.user_id
left outer join positions
on positions.id = applicants.position_id
那么在CakePHP中可以做些什么来获得这种结果。
谢谢大家。
答案 0 :(得分:3)
我看到两个选择: 使用find的递归属性来包含模型的关联关联: http://book.cakephp.org/2.0/fr/models/model-attributes.html#recursive
使用可包含的行为执行相同的操作,但对请求中的联接有更多控制权:http://book.cakephp.org/2.0/fr/core-libraries/behaviors/containable.html
第一个解决方案非常简单,只需添加'recursive'=> 2,你的发现('全'),第二个解决方案有点长,但有更好的表现。