我有一个项目表和一个图像表。
一个项目有很多图像,所以这是两个表之间的一对一关系。
在图像视图中,我可以通过以下方式检索与图像相关的项目名称
<?= $image->has('project') ? $this->Html->link($image->project->project_title, ['controller' => 'Projects', 'action' => 'view', $image->project->project_id]) : '' ?>
,但是现在我想对项目视图做同样的事情。我想显示与特定项目相关的所有图像。但这不起作用:
<?= $project->has('image') ? $this->Html->link($project->image->image_path, ['controller' => 'Images', 'action' => 'view', $project->image->image_path]) : '' ?>
或我需要很多关系?
解决方案
在项目史上:
$this->hasMany('Images', [
'foreignKey' => 'project_id',
'joinType' => 'INNER'
]);
在ProjectScontroller中:
$project = $this->Projects->get($id, [
'contain' => ['Categories', 'Users', 'Tags', 'Images']
]);
在项目> view.ctp
中<?php foreach ($project->images as $images): ?>
<p><?= h($images->image_path) ?></p>
<?php endforeach; ?>