CakePHP - 从另一个表中检索选项列表,以便在Instering之前与表单助手/一起使用

时间:2014-01-23 14:59:14

标签: cakephp cakephp-appmodel

这是另一个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');

2 个答案:

答案 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.

中的捐赠者列表