我有以下型号: - 议程(ID,USER_ID,EVENT_ID) - >属于关联的事件,用户 - 事件(ID等) - >的hasMany议程 - 用户(ID,city_id等) - >的hasMany议程,属于关联市 - 市(ID,姓名) - >用户的hasMany访问第三届协会
虽然在议程控制器,我想显示在他的议程有一定的事项标识用户的City.name。我如何将City数据添加到Agendas数组的用户数组中?
N.B.我不想使用递归2,因为它将大量数据加载到数组中。
我有以下型号: - 议程(ID,USER_ID,EVENT_ID) - >属于关联的事件,用户 - 事件(ID等) - >的hasMany议程 - 用户(ID,city_id等) - >的hasMany议程,属于关联市 - 市(ID,姓名) - >用户的hasMany访问第三届协会
虽然在议程控制器,我想显示在他的议程有一定的事项标识用户的City.name。我如何将City数据添加到Agendas数组的用户数组中?
N.B.我不想使用递归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)
伟大的回答,非常齐全!当我第一次发现Containable时,我感到欣喜若狂。这是很常见的,我认为它需要在许多Cake教程中强调,通常不是。 – 2010-01-07 16:26:48