Невозможно показать ассоциации таблиц в CakePHP - PullRequest
0 голосов
/ 14 июля 2011

В настоящее время у меня сложная ассоциация в CakePHP, которую я не могу решить.

У меня есть следующие модели:

  • Список (идентификатор, имя)
  • Рефералы (идентификатор, имя, адрес электронной почты)
  • List_Users (join_table: id, referral_id, user_id)
  • Пользователи (идентификатор, имя, адрес электронной почты).

Отношения:

  • Списки <- HABTM -> Lists_Users <- HABTM -> Пользователи
  • Рефералы принадлежат спискам
  • Списки имеет много рефералов

* Пользователи являются зарегистрированными пользователями, рефералы просто друзья, которых они рекомендуют в этот список.Система содержит много разных списков.

Я пытаюсь настроить функцию 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());
}

Как я могу заставить эту ассоциацию работать и показывать все необходимые данные?

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

После того, как я сломал себе голову, мне показалось, что я нашел ответ на свой вопрос! Правильная функция будет:

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 голосов
/ 14 июля 2011

Ваша модель List_Users должна быть ListsUsers (списки во множественном числе и верблюжий регистр, не подчеркивание.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...