我在使用CakePHP 2.3 HABTM
时尝试只获得一个paginate
关系。
现在我得到了这个结果:
Array
(
[0] => Array
(
[Ticket] => Array ( .....)
[User] => Array ( .....)
[Priority] => Array ( .....)
[Status] => Array(....)
[Attachment] => Array(....)
....
)
[1] => ....
[2] => ....
)
使用:
$this->Ticket->recursive = 0;
$this->paginate = array(
'limit' => 20
);
我正在使用$this->Ticket->recursive = 0;
,因为我只对belongsTo
与其他表的关系感兴趣,但与此同时,我只想获得HABTM
中的一个关系。
我知道我可以实现它添加contain
数组中的每个单一关系,如下所示:
$this->Ticket->recursive = 0;
$this->paginate = array(
'limit' => 20,
'contain' => array(
'Ticket`, `User`, `Priority`, `Status`, `Attachment`, `Tags`...
)
);
但我有很多桌子,我想知道是否有任何方法可以做到这一点,而无需命名contain
数组中的每一个表。
我还尝试使用contains
内的recursive
array,如下所示:
//getting the filtered tickets
$this->paginate = array(
'limit' => 20,
'contain' => array(
'Ticket' => array('recursive' => 1),
'Tag' //this is the hasMany relationship
)
);
但它没有用。有没有办法实现这一目标,而无需命名所有表格以使其更易于维护?
答案 0 :(得分:1)
好的,因为它似乎没有解决方案,我设法通过获取类型belongsTo
的关联模型,然后添加HABTM关系的模型名称来实现:
$associations = $this->Ticket->getAssociated('belongsTo');
$associations[] = 'Tag';
//getting the filtered tickets
$this->paginate = array(
'limit' => 20,
'contain' => $associations
);