CakePHP HABTM关系表加入

时间:2013-02-05 17:23:50

标签: cakephp

我有一个'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'));

0 个答案:

没有答案