あり2つのステータスORDER_PAID
とORDER_DELIVERED
があると私は、次のデータセットをページ上の5つのブロックを表示する必要があります。注文のYii2理解するdataProvider
総合計: 各項目は、データベースには、フィールドの合計を持って、私はそのカウントする必要があります。ステータスステータスのオーダーの
ORDER_PAID
- 合計と注文の
合計
ORDER_DELIVERED
ORDER_PAID
とORDER_DELIVERED
ステータスのオーダーとの間の相関関係を表示したグラフORDER_PAID
ステータスとのみ注文を含むテーブル。
上記のすべては、ユーザーによって選択されたデータ(日付、先週、先月の間)によって異なります。グラフ\テーブルのデータをfetchs
function getOrderPaidSum(){
return Orders::find()
->where(["owned" => \Yii::$app->user->id])
->andWhere(["status.code" => "ORDER_PAID"])
->sum();
}
もgetOrdersContext
:
function getOrdersContext($params){
$query = Orders::find()
->where(["owned" => \Yii::$app->user->id])
->orderBy('id DESC');
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if(!($this->load($params) && $this->validate())){
return $dataProvider;
}
$query->andFilterWhere([]);
return $dataProvider;
}
4要求たとえば
getOrderDeliveredSum()
+ getOrderPaidSum()
= getTotal()
私が機能を持っているにもありますしかし、あなたが見ることができるように、同じ目的のために同じデータをフェッチする要求があります。最適化の機会はありますか?
UPD 1私は私のDBからの次の値を取得したい :
- 現在のユーザーのための注文の合計。私はまた、データを表示するために
Highcharts::widget
とGridView::widget
を使用する状況ORDER_PAID
とORDER_DELIVERED
- で注文の合計を計算する必要があり、現在のユーザーのための注文の合計を取得するには
- 。 (これは、ステータス
ORDER_PAID
とORDER_DELIVERED
とORDER_PAID
と各注文の価格を表示するグラフで注文を含んでソート可能なテーブルです。
質問の説明がわかりません。サンプルと結果を投稿できますか? – scaisEdge
@scaisEdge、セクション 'UPD 1'を追加しました。これをチェックしてください。 – Ascelhem
OK ..いくつか良い..あなたのコードを見て..関数getOrderPaidSum()私は単純な合計結果の代わりに、すべてのモデルを必要とする理由は理解していない..あなたは、私の正しいアプローチは違うはずです。 – scaisEdge