CakePHP结合了递归和组合

时间:2011-09-28 22:26:59

标签: cakephp recursive-query

我在查找查询时将递归设置为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
    )
);

1 个答案:

答案 0 :(得分:2)

恕我直言,Cake的ORM对于任何超出微不足道的事情都会感到非常失望。以下是我要做的解决方案:

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

  2. 由于Cake可能会生成多个查询,因此有两种可能的解决方案:

    a)尝试Containable。如果您能够操纵其选项以强制Cake使用正确的JOIN构建单个查询,那么您就可以将“组”选项添加到查找中。但是,我经常在尝试这一点时感到沮丧,并采用了以下选项。

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

  3. 我实际上经常使用选项2b,不仅在我必须对结果进行分组时,还要按关联模型进行过滤。