Сейчас я открываю фреймворк Yii и пытаюсь разработать простое приложение, которое позволяет создавать лиги и назначать на них игроков. Соотношение между ними много-много (игрок может подписаться на много лиг, а одна лига содержит много игроков). Итак, у меня есть три таблицы базы данных - tbl_league, tbl_player и tbl_league_player, и я создал внешние ключи, например:
ALTER TABLE tbl_league_player ADD FOREIGN KEY league_id_idxfk (league_id) REFERENCES tbl_league (id);
ALTER TABLE tbl_league_player ADD FOREIGN KEY player_id_idxfk (player_id) REFERENCES tbl_player (id);
Теперь я пытаюсь отобразить Лигу со списком всех подписавшихся на нее игроков, поэтому мой actionView в LeagueController говорит:
public function actionView($id)
{
$issueDataProvider = new CActiveDataProvider('Player', array(
'criteria' => array(
'condition' => 'league_id=:leagueId',
'params' => array(
':leagueId' => $this->loadModel($id)->id
),
),
'pagination' => array(
'pageSize' => 1,
),
));
$this->render('view',array(
'model'=>$this->loadModel($id),
'issueDataProvider' => $issueDataProvider,
));
}
То, что я пытаюсь сделать здесь, - это заставить всех игроков со стола игрока подписаться на определенный идентификатор лиги. Для этого у меня есть модель Player с отношением, определенным так:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'League' => array(self::MANY_MANY, 'League', 'tbl_league_player(player_id, league_id)'),
);
}
Проблема в том, что я, например, захожу в league / view & id = 2, получаю такую ошибку: "SELECT COUNT (*) FROM tbl_player
t
WHERE league_id =: leagueId", поэтому она выглядит отношение не работает. Чего мне не хватает?
Большое спасибо!