Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cakephp:模型中的多层次belongsto_Php_Cakephp - Fatal编程技术网

Cakephp:模型中的多层次belongsto

Cakephp:模型中的多层次belongsto,php,cakephp,Php,Cakephp,在一个模型中,是否可以对belongsTo进行多次迭代 假设有3个表、警报、计划、任务,模型用于警报。我想从任务中获得一个领域,但我必须通过时间表加入 alerts.schedule_id -> schedules.tasks_id -> tasks.name 我尝试了以下语法: var $belongsTo = array( 'Schedule' => array( 'className' => 'Schedule',

在一个模型中,是否可以对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' 
         ));
但这只是将计划和任务直接连接到警报(以下是生成的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=>2
find
设置此属性:

$this->Alert->recursive = 2;
在警报控制器的index()函数中

然后,我不必进行单独的查找,就可以在index.ctp中引用Tasks表中的name字段,如下所示:

<td><?php echo $alert['Schedule']['Task']['name']; ?>&nbsp;</td>


或更好的containable:)我已完成设置此属性:\r\n$this->Alert->recursive=2;