【发布时间】:2012-04-24 01:05:59
【问题描述】:
如果此问题已在其他地方得到解答,我提前道歉;我在高处和低处搜索了一个现有的答案,但一无所获。也许我正在寻找错误的关键字。
我有三个模型,其中两个(学生和导师)与一个普通模型(约会)具有$hasMany 关系,该模型与其他两个模型都有$belongsTo 关系。具体型号如下...
一个学生有很多约会...
class Student extends AppModel {
var $hasMany = array (
'Appointment' => array (
'foreignKey' => 'student_id'
)
);
一位导师有很多约会...
class Tutor extends AppModel {
var $hasMany = array (
'Appointment' => array (
"foreignKey" => 'tutor_id'
)
);
约会属于学生和导师...
class Appointment extends AppModel {
var $belongsTo = array (
'Student' => array (
'foreignKey' => 'student_id'
),
'Tutor' => array (
'foreignKey' => 'tutor_id'
)
);
查看学生的记录时(例如“app/student/view/4”),我需要能够列出他们即将到来的约会的日期以及该约会的导师姓名。因此,我需要在查看 Student 模型时从 Tutor 模型(名称)访问数据。目前我只能使用$this->Student->query() 来拉取相关的导师记录来完成此操作,但这会导致学生的信息在结果数组中重复。
所有$hasMany 和$belongsTo 关系都可以正常工作。 CakePHP 是否有一个我缺少的内置函数来获取相关信息,还是需要在某个地方直接完成?
【问题讨论】:
-
尝试在您的
find上设置recursive => 2。这应该会为您提供一层额外的关联模型。 -
谢谢。这是可行的,但这是一个可扩展的解决方案吗?学生记录针对返回数组中的每个约会进行迭代。该表中有 15 个字段,每个学生有 10 多个约会,即每个查询中有 150 个额外字段。
-
我知道,去过那里...替代方案是 (1) 可包含,(2) forcing joins,或 (3) 手动编写查询。
标签: php cakephp associations belongs-to