スポンサーリンク

[CakePHP2.x]CakePHPでgroup by してcount(*) as xxx のデータの入り方

まずこれを見てください。

$params = array(
		'group' => 'hoge.value',
		'fields' => array('id, 'COUNT(*) AS num', value'),
	);

	var_dump(
		$this->Hoge->find('all', $params)
	);

結果はこうなります。

array
      'Hoge' => 
        array
          'id' => 1
          'value' => string 'hogehogehoge' (length=12)
      0 => 
        array
          'num' => string '1' (length=1)

countした数が配列の外に来てしまって、あまりスマートではありません。

きれいに配置するには以下のようにvirtualFieldsを使います。

$this->Hoge->>virtualFields['num'] = 0;
$params = array(
		'group' => 'hoge.value',
		'fields' => array('id, 'COUNT(*) AS Hoge__num', value'),
	);

	var_dump(
		$this->Hoge->find('all', $params)
	);