2017-02-05 19 views
0

私は MySQLやYii2 ActiveRecordの

test_idとのcreated_at
を持つテーブルを持っている列 "のcreated_at" は、異なる値を持っています。私は、SQLクエリを実行したい、どこに列 "created_at"で分割します。どこ

この構造

私は配列のこのような構造を取得したい:

$all = array('created_at'=>'somevalues', 'test'=>array()); 
+0

yii2モデルを使用していますか? – lin

+0

はい、私はこの解決策を見つける: $モデル=モデル:: find() - > groupBy( '​​created_at') - > all(); ===結果:: find() - >ここで(['created_at' =)は、$ this-> > $ item-> created_at]) } ' – Jdoe

+0

これ以上助けが必要ないのですか? – lin

答えて

0

それは私たちが話しているどのように多くの値によって決まります。 100の異なるcreated_at値がある場合、ソリューションは100 + 1のクエリを実行します。だからあなたはサーバーに多くのプレッシャーをかけます。 created_atの値が多い場合は、データを取得し、created_atで順序付けし、結果を手作業でグループ化するだけです。私はこれがあなたがやろうとしているものよりずっとずっと速くなると信じています。何かのように

$model = Model::find()->orderBy(['created_at' => SORT_ASC])->all(); 
foreach($model as $item) { 
    $data[$item->created_at]['results'][] = $item; 
    // $data[$item->created_at]['created_at'] = $item->created_at; if you really need to 
} 

最後に、あなたはそれがほしいと思う方法をほとんど正確に終わらせます。

関連する問題