У меня проблема с CakePHP: вместо внешнего ключа таблицы отображается имя.
Настройки: 3 стола: игроки, команды, игры
3 модели
команды:public $hasMany = 'Player';
Игроки:public $belongsTo = 'Team';
Игры:public $belongsTo = array(
'HTeam' => array(
'className' => 'Team',
'foreignKey' => 'hteam'
),
'ATeam' => array(
'className' => 'Team',
'foreignKey' => 'ateam'
)
Я думаю, что с моделью все в порядке, потому что идентификаторы отображаются правильно, и я могу добавлять, удалять и т. Д. Так что все работает нормально. Единственное, что не работает, это показать название команды вместо идентификатора команды. В таблице игроков есть team_id в качестве внешнего ключа. Когда я хочу перечислить всех игроков, то появляется только team_id, а не имя со ссылкой на команду. Я пробовал много вещей, но я не был успешным. У меня такая же проблема, когда я перечисляю все игры.
Я попытался установить $displayField = 'name'
в модели Teams, но не знаю, как вызвать имя в представлении, которым управляет Userscontroller.
PlayersController:$this->set('players', $this->Player->find('all'));
$teams = $this->Team->find('list', array('fields' => array('name')));
$this->set('teams', $teams);
также пробовал этот:$teams = $this->Player->Team->find('list', array('fields' => array('name')));
Это код, с помощью которого я пытался показать имя:<?php echo $this->Html->link($teams['Team']['name'],
array('controller' => 'teams', 'action' => 'view', $teams['Team']['id'])); ?>
Но это не работает, потому что у меня нет team_id. Я думаю, что на этот вопрос уже был дан ответ, но либо я тупой, чтобы найти его, либо тупой, чтобы правильно его реализовать.....
Спасибо за вашу помощь!