Выберите из таблицы и связанных - PullRequest
1 голос
/ 08 марта 2011

У меня есть эти таблицы: - Proyectos - Hitos - Tareas

* a проект принадлежит пользователю и имеет много hitos и (опционально) tareas

* a hito принадлежит пользователю и проекта и имеет много hitos и (опционально) tareas

* a tarea принадлежит пользователю , проекту и hito

Теперь я хочу получить те хито, которые принадлежат пользователю, и те таре, которые принадлежат одному и тому же пользователю, с помощью этого кода:

$con1=array('OR'   =>  array(
            'Hito.usuario_id'=>$this->Session->read('Usuario_id'),
            'Tarea.usuario_id'  =>  $this->Session->read('Usuario_id'),
        ));

$this->loadModel('Hito');
$hitos = $this->Hito->find('all',array(
     'conditions' => $con1,
     'group'=>array('Hito.id'),
));

Я получаю только часть Hitos ... У меня есть некоторые связанныетареас, что мне нужно в $ hitos

Кто-нибудь знает, как их получить?

Спасибо

Ответы [ 2 ]

0 голосов
/ 10 марта 2011

Я сделал что-то подобное с «Query»

$this->loadModel('Hito');
$hitos = $this->Hito->query(
    "select *
            from hitos as Hito
            left join tareas as Tarea on (Hito.id = Tarea.hito_id)
            left join usuarios as Usuario on (Hito.usuario_id = Usuario.id)
            where Hito.usuario_id =" . $this->Session->read('Usuario_id') . "
    OR Tarea.usuario_id=" . $this->Session->read('Usuario_id') . "
            group by Hito.id");

Измените SQL на все, что вам нужно, но не забывайте, что в качестве "Modelname" вы хотите, чтобы ваши действительные представления работали.

0 голосов
/ 08 марта 2011

Трудно сказать, не видя код вашей модели, но если ассоциации настроены правильно, CakePHP должен извлечь все связанные данные модели для любой данной модели.Тогда он будет доступен как:

$oneUser = $this->read(null,$id);
debug($oneUser['Hito']); // array of all hitos for that user
debug($oneUser['Tarea']; // array of tareas for that user
debug($oneUser['User']); // the user data.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...