2014-10-10 131 views
0

我有一個數據庫表如下所示:Yii框架2.0

id item date 
1 itemA 2014-01-01 
2 itemB 2014-01-01 
3 itemC 2014-02-02 
4 itemD 2014-02-02 

我想檢索該數據並將得到的結果如下。

2014-01-01 
    itemA 
    itemB 
2014-02-02 
    itemC 
    itemD 

我的模型類使用Yii 2.0的Active Record。我雖然關於使用groupBy('date')如下。

$model = MyModelClass::find()->groupBy('date')->all(); 

通過上述查詢,每個日期只得到一行。在Yii Framework 2.0中有沒有解決方案可以實現我的目標?

+0

IM不確定你想要得到的,你不能僅僅通過日期環路什麼,呼應日期更改時? ...或者使用'orderBy'函數 – Flame 2014-10-10 14:56:16

+1

這就是'groupBy'的想法,它會將結果與「group by」相同的字段進行彙總。我會說你最好按照日期排序結果,然後在顯示結果之前檢查每個結果的日期 – lascort 2014-10-10 14:56:26

+0

讓我們忘記'group by',因爲雖然這是解決方案,但事實並非如此。我如何使用Yii框架2.0中的Active Record來實現我的目標? – 2014-10-10 16:40:14

回答

0

我就這麼像這樣:

$models = MyModelClass::find()->all(); 
foreach($models as $model) { 
    $arr_models[$model->date] = $model; 
    //or $arr_models[$model->date][] = $model->name; to get the array exactly how you want it 
} 

如果你有很多的,你需要經過你可以隨時使用MyModelClass::find()->asArray()->all();

0

嗨,你只能得到一個行每個日期的記錄,因爲groupBy('date')用於查找列項中數值的平均值或總數或計數。

的解決方案是

use yii\helpers\ArrayHelper; 

$models = MyModelClass::find()->asArray()->all(); 

$array = ArrayHelper::map($models, 'id','item','date'); 

可以遍歷數組$取結果