请帮助我处理CakePHP模型关系

请帮助我处理CakePHP模型关系,cakephp,cakephp-2.3,Cakephp,Cakephp 2.3,我很难理解CakePHP中的模型关联。我以前没有使用过OOP或MVC,我觉得这有点棘手 以下是我所拥有的: Clubs 系统上的用户是“俱乐部”。俱乐部有多个字段,包括主要联系人-clubs.club\u primary\u contact\u id Teams 俱乐部可以有一个或多个团队与其关联。与俱乐部一样,球队也有一个主要联系人-teams.teams\u primary\u contact\u id。球队也有一个类型并链接到一个类型表-teams.type\u id。通过teams.

我很难理解CakePHP中的模型关联。我以前没有使用过OOP或MVC,我觉得这有点棘手

以下是我所拥有的:

Clubs
系统上的用户是“俱乐部”。俱乐部有多个字段,包括主要联系人-clubs.club\u primary\u contact\u id

Teams
俱乐部可以有一个或多个团队与其关联。与俱乐部一样,球队也有一个主要联系人-teams.teams\u primary\u contact\u id。球队也有一个类型并链接到一个类型表-teams.type\u id。通过teams.club\u id链接到俱乐部

Contacts
俱乐部可以有一个或多个联系人与其关联。通过contacts.club\u id链接到俱乐部

Types
types.id和types.type\u名称

我希望能够访问clubs/view/x并显示显示以下内容的页面:

  • 俱乐部主要联系人姓名/电子邮件
  • 所有俱乐部联系人
  • 所有俱乐部球队,包括球队主要联系人姓名/电子邮件
TeamsController的添加/编辑/删除功能工作正常-即我可以调用联系人和类型列表,并在视图窗体的选择框中显示这些联系人和类型

不过,我很难从俱乐部模型中准确地访问所有这些

我在这里有什么联系?这是我目前在模型课上学到的东西

App/Model/Club.php

public $hasMany = array(
    'Team' => array(
        'className' => 'Team',
        'foreignKey' => 'club_id'
    ),
    'Contact' => array(
        'className' => 'Contact',
        'foreignKey' => 'club_id',
        'order' => 'contact_name DESC'
        )
);

public $belongsTo = array (
    'ClubPrimaryContact' => array(
        'className' => 'Contact'
    )
);
public $belongsTo = array (
    'TeamPrimaryContact' => array(
        'className' => 'Contact'
    ),
    'Club',
    'Type'
);
public $hasManyAndBelongsTo = array(
    'Team' =>
        array(
            'className' => 'Team'
        )
);
public $belongsTo = array (
    'Team' => array(
        'className' => 'Team'
    )
);
App/Model/Team.php

public $hasMany = array(
    'Team' => array(
        'className' => 'Team',
        'foreignKey' => 'club_id'
    ),
    'Contact' => array(
        'className' => 'Contact',
        'foreignKey' => 'club_id',
        'order' => 'contact_name DESC'
        )
);

public $belongsTo = array (
    'ClubPrimaryContact' => array(
        'className' => 'Contact'
    )
);
public $belongsTo = array (
    'TeamPrimaryContact' => array(
        'className' => 'Contact'
    ),
    'Club',
    'Type'
);
public $hasManyAndBelongsTo = array(
    'Team' =>
        array(
            'className' => 'Team'
        )
);
public $belongsTo = array (
    'Team' => array(
        'className' => 'Team'
    )
);
App/Model/Contact.php

public $hasMany = array(
    'Team' => array(
        'className' => 'Team',
        'foreignKey' => 'club_id'
    ),
    'Contact' => array(
        'className' => 'Contact',
        'foreignKey' => 'club_id',
        'order' => 'contact_name DESC'
        )
);

public $belongsTo = array (
    'ClubPrimaryContact' => array(
        'className' => 'Contact'
    )
);
public $belongsTo = array (
    'TeamPrimaryContact' => array(
        'className' => 'Contact'
    ),
    'Club',
    'Type'
);
public $hasManyAndBelongsTo = array(
    'Team' =>
        array(
            'className' => 'Team'
        )
);
public $belongsTo = array (
    'Team' => array(
        'className' => 'Team'
    )
);
App/Model/Type.php

public $hasMany = array(
    'Team' => array(
        'className' => 'Team',
        'foreignKey' => 'club_id'
    ),
    'Contact' => array(
        'className' => 'Contact',
        'foreignKey' => 'club_id',
        'order' => 'contact_name DESC'
        )
);

public $belongsTo = array (
    'ClubPrimaryContact' => array(
        'className' => 'Contact'
    )
);
public $belongsTo = array (
    'TeamPrimaryContact' => array(
        'className' => 'Contact'
    ),
    'Club',
    'Type'
);
public $hasManyAndBelongsTo = array(
    'Team' =>
        array(
            'className' => 'Team'
        )
);
public $belongsTo = array (
    'Team' => array(
        'className' => 'Team'
    )
);

在这方面,坚持传统会有所帮助

如果希望俱乐部属于某个联系人,请为其提供联系人id,并在俱乐部模型中将“属于”关系设置为“联系人”。您需要为该关系指定一个与Has_Many关系别名不同的别名,例如:

public $belongsTo = array(
        'Leader' => array(
            'className'    => 'Contact'
        )
    );
同样,对于团队,为具有别名的领导者定义一个具有联系人id的“所属对象”,并为联系人定义一个常规的“有很多关系”

然后在查询时,您需要将递归设置得足够高,以获得所有结果,或者,一旦您有了这些结果,就可以使用可包含的行为来优化查询


然后,只需按照常规进行查询&使用
debug()
查看返回的数组结构

设置递归是我的问题。我以前没有真正了解这方面。非常感谢。