Cakephp:模型中的多层次belongsto
在一个模型中,是否可以对belongsTo进行多次迭代 假设有3个表、警报、计划、任务,模型用于警报。我想从任务中获得一个领域,但我必须通过时间表加入Cakephp:模型中的多层次belongsto,php,cakephp,Php,Cakephp,在一个模型中,是否可以对belongsTo进行多次迭代 假设有3个表、警报、计划、任务,模型用于警报。我想从任务中获得一个领域,但我必须通过时间表加入 alerts.schedule_id -> schedules.tasks_id -> tasks.name 我尝试了以下语法: var $belongsTo = array( 'Schedule' => array( 'className' => 'Schedule',
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'
));
但这只是将计划和任务直接连接到警报(以下是生成的sql:
LEFT JOIN `schedules` AS `Schedule` ON (`Alert`.`schedule_id` = `Schedule`.`id`) LEFT JOIN `tasks` AS `Task` ON (`Alert`.`task_id` = `Task`.`id`)
)
试试这个
在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'
)
);
}
然后使用
recursive=>2find
设置此属性:
$this->Alert->recursive = 2;
在警报控制器的index()函数中
然后,我不必进行单独的查找,就可以在index.ctp中引用Tasks表中的name字段,如下所示:
<td><?php echo $alert['Schedule']['Task']['name']; ?> </td>
或更好的containable:)我已完成设置此属性:\r\n$this->Alert->recursive=2;