【问题标题】:Not being able to show table associations in CakePHP无法在 CakePHP 中显示表关联
【发布时间】:2011-07-13 20:00:01
【问题描述】:

目前我在 CakePHP 中有一个复杂的关联,我无法解决。

我有这些模型:

  • 列表(ID、名称)
  • 推荐人(ID、姓名、电子邮件)
  • List_Users(join_table:id、referrer_id、user_id)
  • 用户(ID、姓名、电子邮件)。

关系是:

  • 列表 Lists_Users 用户
  • 推荐属于列表
  • 列出了很多推荐人

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

我要做的是在列表控制器中设置一个 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());
}

我怎样才能使这个关联起作用并显示所有需要的数据?

【问题讨论】:

  • 您没有将finds 的结果分配给变量。这是有问题的错误,还是您的代码中的错误?
  • 这是一个错误。我已经设法解决了这个问题,只需在问题发布后等待 8 小时即可发布带有修复程序的回复。

标签: php mysql cakephp join


【解决方案1】:

您的 List_Users 模型应该是 ListsUsers(复数列表,并且是驼峰式,而不是下划线。)

【讨论】:

    【解决方案2】:

    在打破我自己的脑袋之后,我似乎找到了解决我自己问题的方法!正确的函数是:

    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());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多