2016-10-04 9 views
1

私はcakephp 3.2でフィールドを要約したいと思います。 しかし、フィールドはhasOneモデルの関連付けにあります。cakephp 3.2 inbuilt sum機能を使用して、親テーブルにない関連テーブルの合計演算(フィールドを合計)する方法?

私はバインドクエリでそれをやりたいです。

私は注文テーブルを持っており、私はコレクションテーブルとモデルバインドを行っています。

は、ここで私は、私が試したが、その作業をしていない

コレクションテーブル内のすべてのdue_amountを総括したいです。

私のコードを確認してください。何か問題がありますか?ここで

$this->Orders->hasOne('Collections', [ 
       'className' => 'Collections', 
       'foreignKey' => 'order_id', 
       'strategy' => 'select', 
       'conditions' => function (\Cake\Database\Expression\QueryExpression $exp, \Cake\ORM\Query $query) { 
        $query->order(['Collections.id' => 'ASC']); 
        return []; 
       } 
        ]); 
      $get_total_sales = $this->Orders->find('all')->where($condition)->select(['id', 'region_id', 'net_total'])->contain(['Collections' => ['queryBuilder' => function ($q) { 
           return $q->select(['id', 'order_id', 'total_sale_amount', 'due_amount']); 
          }]])->order(['Orders.due_date DESC']); 


$res2 = $get_total_sales->select(['total_due' =>$get_total_sales->func()->sum('collection.due_amount')])->first(); 

echo $due = $res2->total_due;//its showing column not find error. 
Is it working in order table instead of collections table? 
How can i do it for collection table using the $get_total_sales listing results? 



Below some out put 

[ 
    { 
     "id": 40, 
     "region_id": 2, 
     "net_total": 2899.12, 
     "collection": { 
      "id": 182, 
      "order_id": 40, 
      "total_sale_amount": 2899.12, 
      "due_amount": 1990 
     }, 

    }, 
    { 
     "id": 38, 
     "region_id": 2, 
     "net_total": 110, 
     "collection": { 
      "id": 181, 
      "order_id": 38, 
      "total_sale_amount": 110, 
      "due_amount": 10 
     }, 

    }, 
    { 
     "id": 39, 
     "region_id": 2, 
     "net_total": 16670, 
     "collection": { 
      "id": 190, 
      "order_id": 39, 
      "total_sale_amount": 16670, 
      "due_amount": 16630.99 
     }, 

    }, 

私は

あなたはあなたのケースでコレクションのテーブルで子テーブルの仮想フィールドを、使用することができますあなたの

+0

これらの2つのテーブルについてもdbスキーマを共有してください。また、hasOne関係がある場合は1つの疑問があります。なぜあなたは合計を必要とするのですか?シナリオをより良く説明してください。 –

+0

@Rohit Ailani実際には1つのレコードがコレクションを持っていますが、最後のレコードが必要です。 だから私はそれを持って、必要なデータを持っています。 しかし、私はすべてのレコードを要約したい、ここでは合計は子テーブルで行われます。 – sradha

+0

@Rohit Ailani私は1つのテーブルが1つあり、1つの注文に複数のコレクションがあります。 – sradha

答えて

1

ありがとうございコレクションテーブル内のすべてのdue_amountを総括したいです。

あなたはcakephp3 here

で仮想フィールドを作成するためのマニュアルを確認することができますし、仮想フィールドであなたは、SUM関数を指定することができます。合計関数を書くにはhere

+0

ありがとう...... :) :) – sradha

+0

はい仮想フィールドは一方通行で、私はvfを使用せずに何らかの方法を発見しました。 ありがとうございます:) – sradha

+0

他の人にも必要な場合は、両方の方法で共有するようにしてください。 –

関連する問題