私は CakePHP を学ぼうとしていますが、データを取得するのに苦労しています。私はホッケーの統計 (実際の基本的な統計) を追跡するサイトに取り組んでいます。私は5つのテーブルを持っています。
- 季節 (id、date_start、date_end)
- ゲーム (id、日付、score_team1、score_team2、team1_id、team2_id、season_id)
- チーム (ID、名前、色)
- プレイヤー (id, first_name, last_name)
- 選手_チーム (id, player_id, team_id)
ゲームビューからゲームの 2 チームを取得できます。チームビューからチームのすべてのプレーヤーを取得することもできます。
ゲームの観点からチームのすべてのプレーヤーを取得する方法を理解するのに助けが必要です. 私は多くのことを試しましたが、どれもうまくいかないようです。ゲームビューから $game['Team1']['Players'] のようなことをすることで、チームのすべてのプレーヤーを取得できるとは思っていませんが、うまくいきません。ゲームからチームのプレーヤーにドリルダウンしようとしています。Season->Game->Team1->Players ですが、team1 レベルで行き詰まっています。
これが私のコードの一部です
/cakephp/teams -> debug($teams[1])
array(
'Team' => array(
'id' => '2',
'name' => 'Rouge',
'color' => 'Rouge'
),
'Players' => array(
(int) 0 => array(
'id' => '2',
'first_name' => 'Player2FN',
'last_name' => 'Player2LN',
'PlayersTeam' => array(
'id' => '2',
'player_id' => '2',
'team_id' => '2'
)
),
(int) 1 => array(
'id' => '4',
'first_name' => 'Player4FN',
'last_name' => 'Player4LN',
'PlayersTeam' => array(
'id' => '4',
'player_id' => '4',
'team_id' => '2'
)
)
)
)
しかし、ゲームの詳細ビューから、これを取得します -> debug($game) :
array(
'Game' => array(
'id' => '2',
'date' => '2012-09-16 19:30:00',
'score_team1' => '8',
'score_team2' => '4',
'team1_id' => '2',
'team2_id' => '1',
'season_id' => '1'
),
'Team1' => array(
'id' => '2',
'name' => 'Rouge',
'color' => 'Rouge'
),
'Team2' => array(
'id' => '1',
'name' => 'Bleu',
'color' => 'Bleu'
),
'Season' => array(
'id' => '1',
'date_start' => '2012-09-09',
'date_end' => '2013-04-07'
)
)
モデルの問題だと確信しているので、ここに私のチームとゲームモデルの両方があります
<?php
class Game extends AppModel {
public $name = 'Game';
public $belongsTo = array(
'Season',
'Team1' => array (
'className' => 'Team',
'foreignKey' => 'team1_id'
),
'Team2' => array (
'className' => 'Team',
'foreignKey' => 'team2_id'
)
);
}
?>
<?php
class Team extends AppModel {
public $name = 'Team';
public $hasAndBelongsToMany = array(
'Players' =>
array(
'className' => 'Player',
'joinTable' => 'players_teams',
'foreignKey' => 'team_id',
'associationForeignKey' => 'id'
)
);
}
?>