CakePHP结合递归和组
问题描述:
我在我的find查询中递归设置为Two,这很好,并且返回我想要的所有结果,但是我需要按递归查询中Teo级别深度的结果对Day进行分组。CakePHP结合递归和组
这是我的:Project->Track->Lapse
。但是我需要在赛道上逐日分组,我该怎么做?
$project = $this->Project->find('all', array(
'conditions' => array(
'Project.id' => $id,
'Project.user_id' => $this->Auth->user('id')
),
'recursive' => 2
)
);
答
恕我直言,蛋糕的ORM往往是非常令人失望的事情超越琐碎。以下是我将如何找到解决方案:
首先,启用调试级别2并查看Cake正在生成的查询。这将取决于你所在的协会类型。如果它为您的
find()
生成单个查询,那么您很幸运!只需在查找选项数组中添加一个“组”键,就完成了。-
因为蛋糕是可能产生一个以上的查询,有两种可能的解决方案:
一)尝试Containable。如果您能够操作其选项来强制Cake使用正确的
JOIN
来构建单个查询,那么您已准备好将“组”选项添加到查找中。然而,我经常为此而感到沮丧,并采取了以下的选择。b)手动通知Cake关于必须使用的
JOIN
以便能够对结果进行分组。您可以先解除绑定所有关联模型(this可能有用),然后使用'joins' option强制连接。然后,您可以将“组”选项添加到查找中。
我实际上很频繁地使用选项2b,不仅在我必须对结果进行分组时,还要根据关联模型进行过滤。
这是伟大的意见,谢谢! – benhowdle89