在 CakePHP 3.x 中检索嵌套的引荐数据


Retrieving Nested Referral Data in CakePHP 3.x

>我试图弄清楚如何在CakePHP 3.x中获取嵌套子对象的值

基本示例由三个实体组成:

服务器、机架、Operating_System

表:

机架 - ID、名称

服务器 - ID、主机名、rack_id、operating_system_id

Operating_systems - 编号,名称

机架有许多服务器

服务器属于操作系统 & 属于机架

如何在机架视图中引用机架>服务器>操作系统>名称?

//View.ctp
<?php foreach ($rack->servers as $servers):
echo h($servers->hostname) 
echo h($servers->operating_system->name)   //Doesn't output OS Name
endforeach; ?>
//View Function in RacksController:
public function view($id = null)
{
    $rack = $this->Racks->get($id, [
        'contain' => ['Servers']
    ]);
    $this->set('rack', $rack);
    $this->set('_serialize', ['rack']);
}

不确定这最终是控制器中的自定义查询,还是有内置的 Cake 语法来完成我需要的。 感谢您的任何帮助。

找到答案:

蛋糕 3.x 传递条件到包含

$rack = $this->Racks->get($id, [
        'contain' => ['Servers','Servers.OperatingSystems']
    ]);

解决方案是将点表示法用于深度嵌套关联。 感谢 aknd 为我指明了正确的方向。

尝试:

$rack = $this->Racks->get($id, [
    'contain' => ['Servers' => 'OperatingSystems']
]);