我有两个表artists和pictures具有artist hasMany paintings关系。
与其为每个显示相关图片的艺术家提供一个单独的view.ctp,我只是想显示index.ctp文件中的所有内容,所有列出的艺术家与每个相关的图片(ID列表)一起列出。
在阅读了食谱和无数条线索之后,我完全糊涂了,也不明白我是怎么做到的。(我对PHP和Cakephp仍然非常陌生)
在单个艺术家的view( )函数中,我可以很容易地得到相关的图片,如下所示:
控制器: 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; ?>我知道这不是真的那样,但我该怎么做呢?是否必须在控制器index()函数中使用find()查询,并在视图中检索结果之前存储结果?!我试过了,但是它要么什么也不显示,要么显示SQL查询本身,因为我搞砸了语法.
因此,在尝试了书中的各种东西,并搜索了几个小时后,我似乎在我的大脑中失去了一些基本的理解。而且,我发现的所有类似的问题都让我一无所获。
甚至一个提示,从哪里开始,这将是很好的!非常感谢!
发布于 2015-10-20 16:06:00
好的,我可以理解,我给你举一个例子,它可以帮助你。
有two table 1) artists 2) pictures。
艺术家有2个领域,id,name
id,artist_id,picture //在这里,artist_id建立了艺术家和绘画之间的关系。
在这里,艺术家与图片有很多关系,所以我们将用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 index method应该喜欢下面的代码
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张。
https://stackoverflow.com/questions/33219617
复制相似问题