gpt4 book ai didi

php - CakePHP 3 : How to display associated data for each record in index. ctp?

转载 作者:行者123 更新时间:2023-11-29 01:27:45 24 4
gpt4 key购买 nike

我有两个表 artistspicturesartist hasMany paintings 关系。

而不是为每个显示相关图片的艺术家单独的 view.ctp。我只想显示 index.ctp 文件中的所有艺术家列出的所有艺术家以及每个艺术家的相关图片(ID 列表)。

阅读食谱和无数线程后,我完全感到困惑,不明白我必须怎么做。 (我对 PHP 和 Cakephp 还是很陌生)

在单个艺术家的 view( ) 函数中,我可以像这样轻松获取相关图片:

Controller :ArtistsController.php

..
public function view($id=null)
{
$artist = $this->Artists->get($id, [
'contain' => ['Paintings']
])
...
}

然后通过以下操作获取相应view.ctp中的所有内容:

view.ctp
<?php foreach ($artist->paintings as $paintings): ?>
<ul><li> <?= h($paintings->id) ?> </li></ul>
....
<?php endforeach; ?>

但我如何为表中列出的每个艺术家的 index.ctp/index() 函数做类似的事情?所以我基本上可以有这样的东西:

<?php foreach ($artists as $artist): ?>
<tr><td> <?= h($artist->name) ?> </td></tr>
<tr><td> <?php foreach ($artist->paintings as $paintings): ?>
<ul><li> <?= h($painting->id) ?> </li></ul>
<?php endforeach; ?>
</tr></td>
<?php endforeach; ?>

我知道它并不是真的那样工作,但我该怎么做呢?我是否必须在 Controller index() 函数中使用 find() 查询并在 View 中检索结果之前存储结果?!我确实尝试过,但它要么什么都不显示,要么它本身显示了一个 SQL 查询,因为我以某种方式弄乱了语法...

因此,在尝试了书中的各种内容并搜索了几个小时之后,我的大脑似乎缺少一些基本的理解。我发现的所有类似问题也让我一无所获。

即使提示从哪里开始也很棒!非常感谢!

最佳答案

好的,我可能明白了,我举个例子可能对你有帮助

两个表 1) artists 2) pictures

艺术家有 2 个字段 id,name
图片有 3 个字段 id,artist_id,picture//这里 artist_id 在艺术家和图片之间建立了联系。

这里Artists和图片有很多关系,所以我们写在Model\Table\ArtistsTable.php

 public function initialize(array $config)
{
parent::initialize($config);

$this->table('artists');
$this->displayField('name');
$this->primaryKey('id');

$this->hasMany('Pictures', [
'foreignKey' => 'artist_id'
]);
}

然后Controller\ArtistsController.php 索引方法应该像下面的代码

public function index()
{
$this->paginate =[
'contain' => ['Pictures'] //with artists We also fetch pictures
];
$this->set('artists', $this->paginate($this->Artists));
$this->set('_serialize', ['artists']);
}

现在在 Template\Artists\index.ctp 中你可以像下面的代码一样获取数据

<?php foreach ($artists as $artist): ?>
<?= h($artist->name) ?> // fetch artists name from artists table
<?php foreach ($artist->pictures as $pictures): ?>
<?= h($pictures->picture) ?> // fetch pictures according to artists
<?php endforeach; ?>
<?php endforeach; ?>

现在你得到类似的输出

jondu 1 2 3

这里jondu是一个名字,他有3张图片1,2,3。

关于php - CakePHP 3 : How to display associated data for each record in index. ctp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33219617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com