【发布时间】:2014-09-25 18:35:18
【问题描述】:
我对 Cakephp 很陌生。我的所有模型协会都工作正常,但这个让我很难过,我还没有找到解决类似问题的人。来了。。
我有 4 张桌子:
人
facility_project_people
+-----+----------+------------+ |身份证 |设施项目ID |人名 | +-----+----------+------------+ | 1 | 5 | 1 | | 2 | 6 | 1 | | 3 | 7 | 2 | +---------------+------------+facility_projects
+-----+-------------+------------+------------+ |身份证 |设施_id |项目ID| type_id | +-----+-------------+------------+------------+ | 1 | 1 | 1 | 1 | | 2 | 2 | 3 | 2 | | 3 | 2 | 5 | 3 | +-------------------+------------+-----------+项目
+-----+--------------+ |身份证 |姓名 | +-----+--------------+ | 1 |审计 | | 2 |库存 | | 3 |税务 | | 4 |咨询 | +-------------------+所以我有人可以参与每个设施的许多项目
我正在尝试建立一个模型关联,以从 Person 到他们参与的项目。
MySQL 查询类似于:
SELECT
p.first_name,
pr.name
FROM people p
left join facility_project_people fpp
ON p.id = fpp.person_id
left join facility_projects fp
ON fpp.facility_project_id = fp.id
left join projects pr
ON fp.project_id = pr.id
使用 hasAndBelongsToMany 关联,我了解如何到达 facility_projects 表。
class Person extends AppModel {
public $hasAndBelongsToMany = array(
PersonFacilityProject' => array(
'className' => 'Project',
'joinTable' => 'facility_project_people',
'foreignKey' => 'person_id',
'associationForeignKey' => 'facility_project_id',
),
}
}
显然这并没有给我我需要的东西
查看一个人时,我想查看相关项目,但不知道如何访问项目表。我希望能够向关联添加另一个连接表和外键,但 cakephp 似乎不允许这样做。
感谢任何见解。
【问题讨论】:
-
您是如何尝试检索数据的,您的尝试结果如何?
-
facility_projects 表应该是它自己的模型(参见hasMany through)。该新模型 belongsTo 项目(以及 belongsTo Facility 和 belongsTo 类型)。然后你就可以拥有已经与你的项目相关的 Person HABTM facilty_projects。