我有以下型号: - 议程(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,因为它会将大量数据加载到数组中。
答案 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中)