在一场足球比赛中,我有2个俱乐部“Home-Club”和“Away-Club”。我在MySQL中创建了表“匹配”和“俱乐部”。在“匹配”表中有2个外键“home_id”和“away_id”。我正在使用cakePHP来显示列表匹配,匹配信息包含“Home-Club”和“Away-Club”的名称。如何在模板文件(.ctp文件)中获取“Home-Club”和“Away-Club”的名称。 现在我在模板文件中使用此代码:
$match->club->name
控制器中的代码:
public function index()
{
$this->paginate = [
'contain' => ['Club']
];
$this->set('match', $this->paginate($this->Match));
$this->set('_serialize', ['match']);
}
它总是显示“远离俱乐部”的名称。我不知道怎么得到“家庭俱乐部”的名字
请告诉我该怎么做
非常感谢!
答案 0 :(得分:4)
问题在于belongsTo
关联的定义。尝试以这种方式重新定义它:
$this->belongsTo('HomeClub', [
'className' => 'Club',
'foreignKey' => 'home_id',
'propertyName' => 'home_club'
]);
$this->belongsTo('AwayClub', [
'className' => 'Club',
'foreignKey' => 'away_id',
'propertyName' => 'away_club'
]);
belongsTo 的名称必须是唯一的。现在将它们包含在控制器中
// ...
$this->paginate = [
'contain' => ['HomeClub', 'AwayClub']
];
$this->set('matches', $this->paginate($this->Match));
然后在模板中使用
<?= $match->home_club->name ?>
<?= $match->away_club->name ?>