我无法理解CakePHP中的模型关联。我之前没有使用OOP或MVC,我发现它有点棘手。
这就是我所拥有的:
Clubs
系统上的用户是“俱乐部”。俱乐部有各种领域,包括主要联系人 - clubs.club_primary_contact_id
Teams
俱乐部可以拥有一个或多个与之相关的团队。像俱乐部一样,球队也有一个主要联系人 - teams.team_primary_contact_id。团队也有一个类型,并链接到类型表 - teams.type_id。通过teams.club_id链接到俱乐部
Contacts
分会可以有一个或多个与之关联的联系人。通过contacts.club_id链接到俱乐部
Types
types.id和types.type_name
我希望能够访问club / view / x并显示一个显示以下内容的页面:
TeamsController的添加/编辑/删除功能正常工作 - 即我可以调用联系人列表&在视图表单的选择框中键入并显示它们。
我很难从俱乐部模型中完全访问所有这些。
我的协会在这里有什么关系?这是我目前的模型课中的内容。
应用/型号/ 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'
)
);
应用/型号/ Team.php
public $belongsTo = array (
'TeamPrimaryContact' => array(
'className' => 'Contact'
),
'Club',
'Type'
);
应用/型号/ Contact.php
public $hasManyAndBelongsTo = array(
'Team' =>
array(
'className' => 'Team'
)
);
应用/型号/ Type.php
public $belongsTo = array (
'Team' => array(
'className' => 'Team'
)
);
答案 0 :(得分:0)
坚持这些惯例会有所帮助。
如果您希望俱乐部属于某个联系人 - 请将其指定为contact_id,并将俱乐部模型中的belongs_to关系设置为“联系”。您需要为Has_Many关系别名赋予该关系不同的别名 - 例如:
public $belongsTo = array(
'Leader' => array(
'className' => 'Contact'
)
);
同样对于团队,使用别名定义带有contact_id的belongs_to,并为联系人定义has_many关系。
然后在查询时 - 您需要将递归设置得足够高以获得所有结果,或者一旦您完成该工作,就可以使用可包含的行为优化查询。
然后按照正常和&使用debug()
查看返回的数组结构