请帮助我处理CakePHP模型关系
我很难理解CakePHP中的模型关联。我以前没有使用过OOP或MVC,我觉得这有点棘手 以下是我所拥有的:请帮助我处理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.
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并显示显示以下内容的页面:
- 俱乐部主要联系人姓名/电子邮件
- 所有俱乐部联系人
- 所有俱乐部球队,包括球队主要联系人姓名/电子邮件
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()
查看返回的数组结构设置递归是我的问题。我以前没有真正了解这方面。非常感谢。