从表中选择并关联

时间:2011-03-08 15:18:07

标签: cakephp

我有这些表格:   - Proyectos   - Hitos   - Tareas

* 项目属于用户,并且有许多 hitos 和(可选) tareas

* hito 属于用户项目,并且有许多 hitos 和(可选) tareas

* tarea 属于用户项目 hito

现在我想要检索那些属于用户的hitos以及使用此代码属于同一用户的那些tareas:

$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部分...我有一些相关的tareas,我需要在$ hitos

有人知道如何获得它们吗?

由于

2 个答案:

答案 0 :(得分:0)

很难说没有看到您的模型代码,但如果关联设置正确,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.

答案 1 :(得分:0)

我用“查询”做了类似的事情

$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”部分用于实际视图的工作。