CakePHP не будет применять группу по условию

Я пытаюсь сделать поиск на одной из моих таблиц, и я динамически добавляю условия отношения hasMany от одной модели к другой. Все работает нормально, кроме того, Cake не будет применять условие группы к запросу. Если я скопирую созданный запрос и запустил его в MySQL и добавлю условие Group By, он прекрасно работает. Я пробовал несколько вещей, но безрезультатно, и способ, которым я располагаю сейчас, настроен так же, как страница «Поиск» в документах «Торт», сообщите мне, чтобы настроить группу. Вы можете найти, как я делаю это ниже:

$this->Project->hasMany['ProjectTime']['conditions'] = array('user_id'=>$this->Auth->user('id'), 'date_entry >= '.$firstDay.' AND date_entry <= '.$lastDay); $this->Project->hasMany['ProjectTime']['order'] = array('date_entry ASC'); $this->Project->hasMany['ProjectTime']['group'] = 'ProjectTime.date_entry'; $this->Project->hasMany['ProjectTime']['fields'] = array('ProjectTime.date_entry, ProjectTime.user_id, ProjectTime.project_id, SUM(ProjectTime.duration) AS durationTotal'); $result = $this->Project->find('all', array('conditions'=>array('Project.id IN (' . implode(",", $projectTimeArray) . ')'))); 

Я попытался поместить его непосредственно в массив hasMany в Модели – ничего. Я попытался поставить массив вокруг группы – ничего. Я действительно в тупике, поэтому, если кто-нибудь может помочь, я бы очень признателен.

Это очень странный способ построения вашего запроса: -S

Это можно записать так: (Предполагая, что Project hasMany ProjectTime):

 $result = $this->Project->find('all', array( 'conditions'=>array( 'Project.id'=>implode(",", $projectTimeArray) ), 'joins'=>array( array( 'table'=>'project_times', 'alias'=>'ProjectTime', 'type'=>'INNER', 'conditions'=>array( 'ProjectTime.project_id = Project.id', 'ProjectTime.user_id'=>$this->Auth->user('id'), 'ProjectTime.date_entry >='=>$firstDay 'ProjectTime.date_entry <=' => $lastDay ), 'order'=>array('ProjectTime.date_entry'=>'ASC'), 'group'=>array('ProjectTime.date_entry') ) ) )); 

(Набрал в редактор, непроверенный 😉

Я знаю, что этот ответ задерживается, но я модифицировал ядро, чтобы группа имела hasMany. Я не уверен, почему команда CakePHP приняла решение сделать это, и если кто-то может дать понять, почему они есть, я был бы очень признателен.

Линия: 1730 из /lib/Cake/Model/Datasource/DboSource.php

  case 'hasMany': $assocData['fields'] = $this->fields($LinkModel, $association, $assocData['fields']); if (!empty($assocData['foreignKey'])) { $assocData['fields'] = array_merge($assocData['fields'], $this->fields($LinkModel, $association, array("{$association}.{$assocData['foreignKey']}"))); } $query = array( 'conditions' => $this->_mergeConditions($this->getConstraint('hasMany', $Model, $LinkModel, $association, $assocData), $assocData['conditions']), 'fields' => array_unique($assocData['fields']), 'table' => $this->fullTableName($LinkModel), 'alias' => $association, 'order' => $assocData['order'], 'limit' => $assocData['limit'], 'offset' => $assocData['offset'], 'group' => $assocData['group'], ); 

Значение Value $ assocData ['group'] было добавлено к групповому ключу.