いくつかの列を持つCategoryというテーブルがあり、データベースからほんの少しだけ取得しようとしています。
だから私はこれを試しました:
$sql = 'SELECT uppercat AS id, COUNT(uppercat) AS uppercat FROM category GROUP BY uppercat;';
$d = Yii::app()->db->createCommand($sql)->query();
しかし、出力がおかしいと思います。array_shiftを実行しようとしましたが、これが配列ではないというエラーが表示されます。$ dでvar_dumpを実行すると、次のようになります。
object(CDbDataReader)[38]
private '_statement' =>
object(PDOStatement)[37]
public 'queryString' => string 'SELECT uppercat AS id, COUNT(uppercat) AS uppercat FROM category GROUP BY uppercat;' (length=100)
private '_closed' => boolean false
private '_row' => null
private '_index' => int -1
private '_e' (CComponent) => null
private '_m' (CComponent) => null
OK..それから私は$idでforeachをしました:
array
'id' => string '0' (length=1)
'uppercat' => string '6' (length=1)
array
'id' => string '3' (length=1)
'uppercat' => string '2' (length=1)
array
'id' => string '6' (length=1)
'uppercat' => string '1' (length=1)
array
'id' => string '7' (length=1)
'uppercat' => string '2' (length=1)
array
'id' => string '9' (length=1)
'uppercat' => string '2' (length=1)
それでは、配列が含まれているのに$ idは配列ではないというメッセージが表示されるのはなぜですか?
データベースから特定のデータを取得し、それらに対してarray_shiftを実行する方法は他にありますか?また、findAllBySqlを使用してこれを実行しようとしましたが、モデルにないCOUNT(uppercat)の属性に到達できません。モデルに追加する必要があると思いますが、必要なのは1回だけなので、それは望ましくありません。