我有2个表作为belongsToMany,scouts和merit_badges关联。我还需要访问连接表中的数据,因此关系选项设置为“通过”
e.g。在ScoutsTable.php中
$this->belongsToMany('MeritBadges', [
'through' => 'MeritBadgesScouts'
]);
另外,我在merit_badges表中使用了树行为,因为有些merit_badges具有依赖性。因此,merit_badges表有一个parent_id列。
我在scouts中查看列出所有相关merit_badges的视图,我想显示merit_badges parent merit_badge的名称,但是我无法让它返回该值。
简而言之,这就是我在模板中的内容。
<?php foreach ($scout->merit_badges as $meritBadges): ?>
<tr>
<td><?= h($meritBadges->name) ?></td>
<td><?= $meritBadges->has('parent_merit_badge') ? $meritBadges->parent_meritbadge->name : '' ?></td>
</tr>
?>
'has('parent_merit_badge')'返回false,所以我假设我需要在ScoutTable模型中添加一些内容才能使其正常工作,但我无法弄清楚是什么。这是CakePHP 3.5,顺便说一句。感谢
答案 0 :(得分:0)
问题不在模型中,而是在此模板的控制器中。我需要将ParentMeritBadges模型传递给模板,如下所示。
public function view($id = null)
{
$scout = $this->Scouts->get($id, [
'contain' => ['MeritBadges', 'MeritBadges' => ['ParentMeritBadges']]
]);
$this->set('scout', $scout);
}
完成后,以下工作。
<?php foreach ($scout->merit_badges as $meritBadges): ?>
<tr>
<td><?= h($meritBadges->name) ?></td>
<td><?= $meritBadges->has('parent_merit_badge') ? $meritBadges->parent_merit_badge->name : '' ?></td>
</tr>
?>