CakePHP 3.0无法从1个表中获取2个项目

时间:2015-05-23 11:22:19

标签: cakephp-3.0

在一场足球比赛中,我有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']);
    }

它总是显示“远离俱乐部”的名称。我不知道怎么得到“家庭俱乐部”的名字

请告诉我该怎么做

非常感谢!

1 个答案:

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