>我试图弄清楚如何在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']
]);