2011-10-09 65 views
-1

以下链接用于Favors列表中!它链接到用户所在的地方,但是正在被使用在喜好列表中。因此,喜欢变量。链接上的CakePHP关系

我有三个模型用户,地方和Favors。用户有很多好处和一个地方,一个好处属于一个用户。

<?php foreach($favours as $favour): ?> 

<p><?php echo $this->Html->link($favour['User']['firstname'] . ' ' . $favour['User']['lastname'], array('controller'=>'users','action'=>'view','userName'=>$favour['User']['username'])); ?> in <?php echo $this->Html->link($favour['Place']['name'], array('controller'=>'places','action'=>'view',$favour['Place']['id'])); ?> asked a favour <?php echo $favour['Favour']['datetime']; ?></p> 

<h3><?php echo $this->Html->link($favour['Favour']['title'], array('controller'=>'favours','action'=>'view',$favour['Favour']['id'])); ?></h3> 

如何显示的联系,在现阶段,我得到一个错误说那个地方是不确定的。

这是该列表中的控制器操作:

function index() 
{ 
    $favours = $this->paginate(); 

    if (isset($this->params['requested'])) 
    { 
     return $favours; 
    } 
    else 
    { 
     $this->set('favours', $favours); 
    } 
} 

回答

0

请务必包含地点的青睐获取数据时。

+0

?我不知道这是什么意思:( – Cameron

+0

http://book.cakephp.org/view/1323/Containable – Ivo

+0

我仍然很困惑:/你可能会发布一些代码的答案或许吗?谢谢 – Cameron

0

这是应该看起来像你的favours_controller:

function index(){ 
    $favours = $this->Favour->find('all'); 
    $places = $this->Favour->Place->find('all'); 
    $this->paginate(); 
    $this->set(compact('users', 'places'); 
} 

这是应该看起来像你的index.ctp:

<?php foreach($favours as $favour): ?> 
<?php echo $this->Html->link($favour['Favour']['username'], array('controller'=>'users','action'=>'view', $favour['Favour']['username'])); ?> 
<?php endforeach; ?> 
<?php foreach($places as $place): ?> 
<?php echo $this->Html->link($place['Place']['place'], array('controller'=>'places','action'=>'view', $place['Place']['place'])); ?> 
<?php endforeach; ?> 

您可能还需要定义uses变量:

var $uses = array('Place'); 
+0

您是否阅读过这个问题?:)问题在于他们在Favour和地点之间没有直接关系。一个地方连接到一个用户和一个用户连接一个忙,所以当我显示一个优惠列表时,我只能做它和用户之间的关系,而不是拉取地方信息! – Cameron

+0

@Cameron我已经更新了我的问题。我误解了你的看法。 –

+0

谢谢,但我没有列出地方;)我只是显示用户的位置,所以它读取每个喜欢像'卡梅伦在哈德斯菲尔德在2011年10月9日问了一个喜欢',所以卡梅伦是喜欢的作者和哈德斯菲尔德是与该作者链接的地方。 – Cameron