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往往是非常令人失望的事情超越琐碎。以下是我将如何找到解决方案:

  1. 首先,启用调试级别2并查看Cake正在生成的查询。这将取决于你所在的协会类型。如果它为您的find()生成单个查询,那么您很幸运!只需在查找选项数组中添加一个“组”键,就完成了。

  2. 因为蛋糕是可能产生一个以上的查询,有两种可能的解决方案:

    一)尝试Containable。如果您能够操作其选项来强制Cake使用正确的JOIN来构建单个查询,那么您已准备好将“组”选项添加到查找中。然而,我经常为此而感到沮丧,并采取了以下的选择。

    b)手动通知Cake关于必须使用的JOIN以便能够对结果进行分组。您可以先解除绑定所有关联模型(this可能有用),然后使用'joins' option强制连接。然后,您可以将“组”选项添加到查找中。

我实际上很频繁地使用选项2b,不仅在我必须对结果进行分组时,还要根据关联模型进行过滤。

+0

这是伟大的意见,谢谢! – benhowdle89