【问题标题】:cakePHP 3.0 one to many relationcakePHP 3.0 一对多关系
【发布时间】:2015-05-07 12:50:21
【问题描述】:

我有一个项目表和一个图像表。

一个项目有很多图片,所以两个表之间是一对多的关系。

在图像视图中,我可以使用以下方法检索与图像相关的项目名称:

<?= $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]) : '' ?>

或者我需要一个多对多关系吗?

【问题讨论】:

  • 你只需要belongsTo & hasMany。项目有许多图像和图像属于项目
  • 如果您将解决方案添加为实际答案并稍后接受它会很好,以便其他读者看到问题已解决。

标签: mysql cakephp many-to-many one-to-many cakephp-3.0


【解决方案1】:

解决方案

在项目表中:

$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; ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2023-03-29
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多