我在控制器中添加了这一行:
public $uses = array('DemandeFormation','Formation');
我读过它将允许我在我的控制器中使用Formation和DemandeFormation模型:DemandeFormationsController
这是我的功能,对我来说似乎是功能性的:
public function lister($id=null) {
$options=array('conditions' => array('DemandeFormation.utilisateur_id' => $id));
$this->set('demandes',$this->DemandeFormation->find('all',$options));
$this->set('formations',$this->Formation->find('all',$options));
}
lister.ctp内容:
<?php
foreach($demandes as $d)
{
$id=$d['DemandeFormation']['formation_id'];
$nom=$formations['Formation'][$id];
echo $nom;
}
?>
执行操作后,我在浏览器上收到两个错误:
Undefined index: Formation [APP\View\DemandeFormations\lister.ctp]
Undefined index: [APP\View\DemandeFormations\lister.ctp]
我的代码出了什么问题。我将非常感谢您的帮助和建议。
答案 0 :(得分:0)
$formations
返回 find('all')
,因此它是一个用数字键索引的数组,如:
$formations = array(
0 => array(
'Formation' => array()
),
1 => /* ... */
) ;
因此,您无法直接访问Formation
,您需要能够使用id
访问它。
最简单的方法是在belongsTo
模型中添加DemandeFormation
关系:
class DemandeFormation extends AppModel {
/* ... */
public $belongsTo = array(
/* Nothing more because you kept CakePHP foreign key style. */
'Formation'
) ;
/* ... */
}
他们,您不需要使用Formation
检索find('all')
,并且可以使用foreach
循环访问您的字段:
$d['Formation']['name']
其中name
是Formation
表中的字段。