php - CakePHP 不会按条件应用组

标签 php mysql cakephp group-by

我正在尝试在我的一个表上进行查找,并且正在动态地向从一个模型到另一个模型的 hasMany 关系添加条件。一切正常,除了 Cake 不会将组条件应用于查询。如果我复制生成的查询并在 MySQL 中运行它并添加我的 Group By 条件,它会很好地工作。我尝试了很多方法,但都无济于事,我现在的设置方式就像 Cake 文档中的“查找”页面告诉我设置分组依据一样。你可以在下面找到我是怎么做的:

$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')
        )
    )
));

(输入编辑器,未经测试;-)

关于php - CakePHP 不会按条件应用组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746506/

相关文章:

php - 如何计算考虑营业时间的平均响应时间?

php - 用于将 csv 文件插入 mysql 数据库的 Drupal 模块

php - array_replace_recursive 不会用一些空数组替换数组

php - 在 symfony 3.0 中将表单定义为服务

PHP $_GET ['Variable' ] 在 $query 中回显但不求值

mysql - 在 MySQL 命令行中,如何防止数据值中出现的新行在 SELECT 期间导致控制台输出中出现新行?

cakephp - 在 Cakephp 中使用 $this->Auth 获取关联模型

php - 如何从 Controller 调用 View 文件(cakePHP)

mysql - pymysql 和 sqlalchemy : AttributeError: 'DateTime' object has no attribute 'translate'

javascript - 如何在 CakePHP 中添加 onChange 事件来选择标签?