2011-07-13 38 views
0

目前我在CakePHP中有一个复杂的关联,我无法解决这个问题。不能在CakePHP中显示表关联

我有这些模型:

  • 列表(ID,姓名)
  • 介绍人(ID,姓名,电子邮件)
  • List_Users(join_table:ID,referral_id,USER_ID)
  • 用户( ID,姓名,电子邮件)。

的关系是:

  • 列表< - HABTM - > Lists_Users < - HABTM - >用户
  • 介绍人属于关联列表
  • 列出的hasMany介绍人

*用户是注册用户,推荐人只是他们推荐给这个名单的朋友。该系统包含许多不同的列表。

我想要做的是在列表控制器中设置一个showList函数以显示链接到此列表的所有用户和引用。我已经使用这个作为第一控制器尝试过,但没有成功:

function showList() { 
    $this->List->recursive = 2; 
    $users->List->User->find('all'); 
    $referrals->List->Referral->find('all'); 
    $this->set(compact('users','referral')); 
    $this->set('listas', $this->paginate()); 
} 

我怎么可能让这个协会工作并显示所有数据所需要的?

+0

你没有把'find'的结果分配给变量。这是一个有问题的错误,或者在你的代码中? – lxa

+0

这是一个错误。我已经设法解决这个问题,只需要在发布问题后等待8小时以发布修复答复。 –

回答

0

打破我自己的脑袋之后,似乎我发现awnser我自己的问题!正确的功能是:

function showList($id = null) { 
    $this->List->recursive = 0; 
    if (!$id) { 
     $this->Session->setFlash(__('Invalid', true)); 
     $this->redirect(array('action' => 'index')); 
    } 
    else { 
    $this->set('list', $this->List->read(null, $id)); 
    $this->set('users', $this->List->User->find('all', 
     array(
      'fields' => array('id','name', 'email'), 
      'order' => 'name ASC' 
      ) 
     )); 
    $this->set('referrals', $this->List->Referral->find('all', 
     array(
      'fields' => array('id','name', 'email'), 
      'order' => 'name ASC' 
      ) 
     )); 
    } 
    $this->set('lists', $this->paginate()); 
} 
0

List_Users模式应该是ListsUsers(复数列表和骆驼的情况下,没有下划线。)