私は今、Yii フレームワークを発見し、リーグを作成してプレイヤーを割り当てることができる単純なアプリケーションを開発しようとしています。これらの関係は多対多です (プレイヤーは多くのリーグに登録でき、1 つのリーグには多くのプレイヤーが含まれます)。したがって、tbl_league、tbl_player、および tbl_league_player の 3 つの db テーブルがあり、次のような外部キーを作成しました。
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);
今、私はそれにサブスクライブしているすべてのプレイヤーのリストでリーグを表示しようとしているので、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」というエラーが表示されるため、関係が機能していないように見えることです。私は何が欠けていますか?
どうもありがとう!