我在查找查询时将递归设置为2,这很好,并返回我想要的所有结果,但我需要在递归查询中深入Teo级别的结果按日分组。
这就是我所拥有的:Project->Track->Lapse
。但是我需要在赛道上按天分组,我该怎么做?
$project = $this->Project->find('all', array(
'conditions' => array(
'Project.id' => $id,
'Project.user_id' => $this->Auth->user('id')
),
'recursive' => 2
)
);
答案 0 :(得分:2)
首先,启用调试级别2并查看Cake正在生成的查询。这取决于您所拥有的关联类型。如果它为您的find()
生成一个查询,那么您很幸运!只需在查找选项数组中添加一个“组”键即可。
由于Cake可能会生成多个查询,因此有两种可能的解决方案:
a)尝试Containable。如果您能够操纵其选项以强制Cake使用正确的JOIN
构建单个查询,那么您就可以将“组”选项添加到查找中。但是,我经常在尝试这一点时感到沮丧,并采用了以下选项。
b)手动告知Cake关于它必须使用的JOIN
以便能够对结果进行分组。您可以首先取消绑定所有关联的模型(this可能有用),然后使用'joins' option强制连接。然后,您可以将“组”选项添加到查找。
我实际上经常使用选项2b,不仅在我必须对结果进行分组时,还要按关联模型进行过滤。