2

私は 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'
                )
        );
    }
?>
4

1 に答える 1

1

使用する

   $this->Game->recursive=2; 
   $this->Game->find('all');
于 2012-08-03T18:16:19.247 に答える