CakePHP-返回一些3级深度的数据很困难

CakePHP-返回一些3级深度的数据很困难,cakephp,Cakephp,我正在努力学习CakePHP,我很难获得一些数据。 我正在一个网站上跟踪曲棍球统计数据(真实的基本统计数据)。我有五张桌子 季节(id、开始日期、结束日期) 比赛(id、日期、得分团队1、得分团队2、团队1、团队2、赛季id) 团队(id、姓名、颜色) 玩家(id、名字、姓氏) 球员与球队(id、球员id、球队id) 我可以从游戏视图中得到一场游戏的两支球队。 我还能够从团队视图中获取一个团队的所有球员 我需要帮助找出如何从比赛的角度让一支球队的所有球员上场。 我试了很多东西,但似乎都不管用

我正在努力学习CakePHP,我很难获得一些数据。 我正在一个网站上跟踪曲棍球统计数据(真实的基本统计数据)。我有五张桌子

  • 季节(id、开始日期、结束日期)
  • 比赛(id、日期、得分团队1、得分团队2、团队1、团队2、赛季id)
  • 团队(id、姓名、颜色)
  • 玩家(id、名字、姓氏)
  • 球员与球队(id、球员id、球队id)
我可以从游戏视图中得到一场游戏的两支球队。 我还能够从团队视图中获取一个团队的所有球员

我需要帮助找出如何从比赛的角度让一支球队的所有球员上场。 我试了很多东西,但似乎都不管用。从我的游戏观点来看,我很难通过做$game['Team1']['players']这样的事情来获得一个团队的所有球员,但这不起作用。我试图从一场比赛中深入了解一支球队的球员。 赛季->比赛->团队1->球员,但我被困在团队1级

这是我的一些代码

/cakephp/teams->debug($teams[1])

但是从游戏细节视图中,我得到了这个->调试($game):

我很确定这是一个模型问题,所以这是我的团队和游戏模型

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

使用

   $this->Game->recursive=2; 
   $this->Game->find('all');

谢谢工作起来很有魅力!我知道这是可行的,但对于大量数据来说,这不是效率低下吗?遏制行为会更好吗?是的。这取决于数据库的设置方式,但如果模型有点复杂,则会导致性能下降。我总是尝试实现contain,但是递归有一个很大的优势,就是它是一个单行程序。适合快速开发、小数据、简单模型。最后,我相信contain是必要的,但是当Pureconstant更熟悉框架时,它就可以实现了。
<?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'
                )
        );
    }
?>
   $this->Game->recursive=2; 
   $this->Game->find('all');