访问第三个协会

时间:2010-01-07 11:37:47

标签: php cakephp

我有以下型号: - 议程(id,user_id,event_id) - > belongssto事件,用户 - 事件(id等) - >非常议程 - 用户(id,city_id等) - > hasmany议程,属于城市 - 城市(id,名称) - > hasmany用户

在Agendas控制器中,我想显示在他的Agendas中具有特定event_id的用户的City.name。如何将City数据添加到Agendas数组的User数组中?

N.B。我不想使用递归2,因为它会将大量数据加载到数组中。

1 个答案:

答案 0 :(得分:2)

您最好的选择是CakePHP包含行为http://book.cakephp.org/view/474/Containable

它允许您限制返回的相关模型数据 - 它基本上具有递归2的能力,能够找到深层关联数据,但具有更好的性能和更清晰,因为它只提供您需要的数据

类似下面的代码应返回用户数据中的City数据,包括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中)

相关问题