我有一个'patient_cases'表,其中HABTM与'procedures'表有关系。这个“程序”表与“顾问”表有多对一的关系,然后与“专业”表有多对一的关系。
关系工作正常并且使用cakephp调试工具栏我可以看到当我查看'patient_cases'索引页面时所有内容都正确通过,但是我只获得consultant_id和specialty_id而不是所有与相关联的字段模型。
这是我应该发生的事情 -
在CakePHP中,一些关联(belongsTo和hasOne)执行自动 连接以检索数据,因此您可以发出查询以检索模型 基于相关数据。
但是hasMany和hasAndBelongsToMany不是这种情况 关联。
我希望能够使用procedures.consultant_id从'顾问'表中获取顾问名称,并使用consultant.specialty_id从'专业'中获取专业名称。
我尝试过玩一些表连接,但没有成功,
class PatientCase extends AppModel {
public $hasAndBelongsToMany = array(
'Procedure' => array(
'className' => 'Procedure',
'joinTable' => 'patient_cases_procedures',
'foreignKey' => 'patient_case_id',
'associationForeignKey' => 'procedure_id',
'unique' => true
)
);
}
class Procedure extends AppModel {
public $belongsTo = array(
'Consultant' => array(
'className' => 'Consultant'
)
);
}
class Consultant extends AppModel {
public $belongsTo = array(
'Specialty' => array(
'className' => 'Specialty',
'conditions' => array('Specialty.active' => 1)
)
);
public $hasMany = array(
'Procedure'
);
}
class Specialty extends AppModel {
public $hasOne = array(
'Consultant'
);
);
}
$this->set('patientCases', $this->PatientCase->find('all'));
返回我需要的一切,返回每个模型数组(此处未提及的其他关系),但不返回模型数组'Consultant',这也意味着我无法获得链接到''的'专业'数据顾问'模型
修改 我已经设法通过在PatientCasesController中使用它来获取我需要的数据
$this->set('patientCases', $this->PatientCase->find('all'));
$this->set('patientCaseProcedures', $this->PatientCase->Procedure->find('all'));
然而,理想情况下,我想要返回“病人病房”中的所有内容,这可能吗?
修改 我使用递归函数
解决了这个问题$this->PatientCase->recursive = 3;
$this->set('patientCases', $this->PatientCase->find('all'));