代码之家  ›  专栏  ›  技术社区  ›  Lizard

Cakephp和Group by

  •  13
  • Lizard  · 技术社区  · 14 年前

    使用cakephp 1.2,我正在尝试生成 GROUP BY 查询:

    SELECT `categories`.*, COUNT(`entities`.id)
    FROM `categories` 
    LEFT JOIN `entities` ON (`categories`.`id` = `entities`.`category_id`)
    GROUP BY `categories`.`id`
    

    我该怎么做?如果这有帮助的话,我正在使用“可控制的”。

    3 回复  |  直到 10 年前
        1
  •  25
  •   Lizard    14 年前

    这就是我灌输的:

     $options = array(
                        'conditions' => $conditions,
                        'fields'=>array('Category.*','COUNT(`Entity`.`id`) as `entity_count`'),
                        'joins' => array('LEFT JOIN `entities` AS Entity ON `Entity`.`category_id` = `Category`.`id`'),
                        'group' => '`Category`.`id`',
                        'contain' => array('Domain' => array('fields' => array('title')))
                    );
    
                    return $this->find('all', $options);
    
        2
  •  8
  •   erlando    11 年前

    Model->find() 有一个 group 帕拉姆

        3
  •  5
  •   Aditya P Bhatt    10 年前

    默认情况下可能的键,所有这些键都是可选的:

    $params = 
            array(
            'conditions' => array('Model.field' => $thisValue), //array of conditions
            'recursive' => 1, //int
            //array of field names
            'fields' => array('Model.field1', 'DISTINCT Model.field2'),
            //string or array defining order
            'order' => array('Model.created', 'Model.field3 DESC'),
            'group' => array('Model.field'), //fields to GROUP BY
            'joins' => array('Join relations here'), // for ex: LEFT JOIN `entities` AS Entity ON `Entity`.`category_id` = `Category`.`id`
            'limit' => n, //int
            'page' => n, //int
            'offset' => n, //int
            'callbacks' => true //other possible values are false, 'before', 'after'
        );
    

    查询:

    $resp = find('all', $params);
    
    debug($resp);