在模型中,是否可以对belongsTo进行多次迭代?
假设3个表,警报,日程表,任务和模型用于警报。我想从任务中获得一个领域,但我必须通过时间表加入。
alerts.schedule_id -> schedules.tasks_id -> tasks.name
我尝试了这种语法:
var $belongsTo = array(
'Schedule' => array(
'className' => 'Schedule',
'foreignKey' => 'schedule_id'
),
'Task' => array(
'className' => 'Task',
'foreignKey' => 'task_id'
));
但是,这只是将Schedules和Tasks直接连接到Alerts(这是生成的sql:
LEFT JOIN `schedules` AS `Schedule` ON (`Alert`.`schedule_id` = `Schedule`.`id`) LEFT JOIN `tasks` AS `Task` ON (`Alert`.`task_id` = `Task`.`id`)
)
答案 0 :(得分:3)
我最终设置了这个属性:
$this->Alert->recursive = 2;
在警报控制器的index()函数中。
然后我没有必要单独查找并能够在index.ctp的Tasks表中引用name字段,如下所示:
<td><?php echo $alert['Schedule']['Task']['name']; ?> </td>
答案 1 :(得分:1)
试试这个。
在alert.php中
CLass Alert extends AppModel{
var $name = 'Alert';
var $belongsTo = array(
'Schedule' => array(
'className' => 'Schedule',
'foreignKey' => 'schedule_id'
)
);
}
在schedule.php中
CLass Schedule extends AppModel{
var $name = 'Schedule';
var $belongsTo = array(
'Task' => array(
'className' => 'Task',
'foreignKey' => 'task_id'
)
);
}
然后find
与recursive=>2