Доступ к 3-й ассоциации - PullRequest
       8

Доступ к 3-й ассоциации

0 голосов
/ 07 января 2010

У меня есть следующие модели: - Повестка дня (id, user_id, event_id) -> Событие, Пользователь - Событие (идентификатор и т. Д.) -> Повестка дня - Пользователь (id, city_id и т. Д.) -> Повестка дня hasmany, принадлежащая City - Город (id, name) -> hasmany Пользователь

Находясь в контроллере Agendas, я хочу отобразить City.name пользователя, у которого есть определенный event_id в его повестках дня. Как добавить данные города в массив User массива Agendas?

N.B. Я не хочу использовать рекурсив 2, потому что это загружает много данных в массив.

1 Ответ

2 голосов
/ 07 января 2010

Ваш лучший вариант выглядит как контейнерное поведение CakePHP http://book.cakephp.org/view/474/Containable

Это позволяет вам ограничить связанные данные модели, которые возвращаются - в основном это рекурсивная способность 2 в том, чтобы находить глубокие ассоциации данных, но имеет гораздо лучшую производительность и чище, потому что дает вам только те данные, которые вам нужны .

Что-то вроде следующего кода должно возвращать данные города в данных пользователя, включая условие event_id.

$this->Agenda->find('all', array(
    'contain' => array(
        'User' => array(
            'City'
        ),
    ),
    'conditions' => array(
        'Agenda.event_id' => $event_id
    )
));

Просто для завершения этого фрагмента кода, убедитесь, что var $actsAs = array('Containable'); находится вверху модели (или в app_model.php, если вы хотите, чтобы встраиваемое поведение было доступно для всех моделей)

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