CakePHP Получить данные из далеких отношений - PullRequest
0 голосов
/ 10 октября 2011

Ниже приведен пример, который не используется в моем приложении, но я надеюсь получить теорию и применить ее к своему собственному приложению после получения ответа.

Итак, возьмем простое приложение с 3 таблицами: Пользователи,Местоположения и сообщения

, а отношения - это сообщение, у которого есть пользователь, и у пользователя есть местоположение, но у местоположения не обязательно есть пользователь.

Если я получу список сообщений изатем показать пользователю этого сообщения, это нормально.Но что, если я хочу вытащить местоположение пользователя?Так как они не связаны между Почтой и Местоположением, а между Пользователем и Почтой.Как бы я это сделал?

Пример цикла:

<?php foreach($posts as $post): ?>

<?php echo $this->Html->link($post['User']['firstname'], array('controller'=>'users','action'=>'view','userName'=>$post['User']['username'])); ?> in <?php echo $this->Html->link($post['Place']['name'], array('controller'=>'places','action'=>'view',$post['Place']['id'])); ?>

и это контроллер:

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

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

Теперь это не будет работать, так как Место не определено!Как мне это сделать?

Я слышал упомянутое Containable, но некоторые примеры были бы великолепны!

1 Ответ

0 голосов
/ 10 октября 2011

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

, например

function index()
    {
        $this->paginate = array(
           'contain' => array('User' => array('Location')),
        );
        $posts = $this->paginate();

        if (isset($this->params['requested']))
        {
            return $posts;
        }
        else
        {
            $this->set('posts', $posts);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...