以下是一个示例,并没有在我的应用程序中使用,但我希望得到理论并在获得回答者后将其应用于我自己的应用程序。
因此,请使用包含3个表的简单应用:用户,位置和帖子
并且关系是帖子有用户而用户有位置但是位置不一定有用户。
如果我拉一个帖子列表然后显示该帖子的用户就可以了。但是,如果我想拉出用户的位置呢?因为它们与帖子和位置之间没有关系,但它们是用户和帖子之间的关系。我该怎么做?
循环示例:
<?php foreach($posts as $post): ?>
<?php echo $this->Html->link($post['User']['firstname'], array('controller'=>'users','action'=>'view','userName'=>$post['User']['username'])); ?> in <?php echo $this->Html->link($post['Place']['name'], array('controller'=>'places','action'=>'view',$post['Place']['id'])); ?>
这是控制器:
function index()
{
$posts = $this->paginate();
if (isset($this->params['requested']))
{
return $posts;
}
else
{
$this->set('posts', $posts);
}
}
现在这不会起作用,因为Place未定义!我该怎么做?
我听说过Containable
,但有些例子会很棒!
答案 0 :(得分:0)
查看可包含的行为。它不仅可以帮助您解决此问题,还可以确保仅检索,解析和返回所需的数据,从而帮助您提高应用程序的性能。
e.g。
function index()
{
$this->paginate = array(
'contain' => array('User' => array('Location')),
);
$posts = $this->paginate();
if (isset($this->params['requested']))
{
return $posts;
}
else
{
$this->set('posts', $posts);
}
}