我现在正在发现 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);
现在我正在尝试显示 League 以及所有订阅它的玩家的列表,所以我在 LeagueController 中的 actionView 说:
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 表中的所有玩家订阅特定的联赛 ID。为此,我有 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”所以看起来关系不起作用。我错过了什么?
非常感谢!