这是另一个cakePHP问题!我有一个名为blood_groups的表,其中有blood_group_id和group字段。然后我有另一个名为donor的表,它有几个字段,如姓名,姓氏等。此表中包含的另一个字段是外键' blood_group_id'在检索时需要映射到blood_group表。在捐赠者注册视图中,我希望能够从blood_groups表中检索这些值,并使用formHelper(以及它们各自的id' s)显示它们。
我已经通过了CAKE文档,我知道我需要在我的模型之间创建关联,但我很难想出这个。我应该在Donor模型中创建$ hasOne关联(考虑到Donor表具有另一个表的fk)。我将如何从blood_groups模型中检索blood_groups的选项?
它应该像这样工作吗?(还有其他先决条件吗?): 在我的DonorController中 -
$ this-> set(' blood_groups',$ this-> Donor-> Blood_Group-> find(' all'));
在Views / Donor / add.ctp
中echo $ this-> Form-> input(' blood_group_id');
答案 0 :(得分:2)
通过关联访问数据很好。但是对于无线电或复选框,您想要进行查找('列表)。您的模型和变量名称与the CakePHP convention不匹配,应该没有下划线。
正确命名这应该足以填充输入。
// controller
$this->set('bloodGroups', $this->Donor->BloodGroup->find('list'));
// view
echo $this->Form->input('blood_group_id');
如果您因某些原因不遵守惯例:
echo $this->Form->input('blood_group_id', array(
'options' => $bloodGroups
));
请参阅:
答案 1 :(得分:0)
Create one function in BloodGroup Model
function getDonors(){
$options = array(
// 'conditions' => array('Donor.blood_group_id'=>$id),
'joins' => array(
array(
'alias' => 'Donor',
'table' => 'donors',
'type' => 'LEFT',
'conditions' => array(
'Donor.blood_group_id = BloodGroup.blood_group_id',
),
)
),
'fields' => array('Donor.name','Donor.surname','Donor.blood_group_id',
'BloodGroup.blood_group_id')
);
$returnData = $this->find('all',$options);
return $returnData;
}
现在从控制器调用此函数
App::import('model','BloodGroup');
$BloodGroup = new BloodGroup;
$donorList = $BloodGroup->getDonors();
$this->set('donorList',$donorList);
在视图文件中,您将获得$donorList.