2016-05-25 2 views
0

1対多で別のエンティティ(orderRows)のプロパティを持つエンティティ(オーダー)があります。 orderRow内のtotalPriceを合計して、すべての価格のgrandTotalを取得して、完全な注文の価格を取得するにはどうすればよいですか?エンティティからOneToManyの子である配列内のフィールドを合計する方法

これはOrderエンティティの$orderRows$totalSumのプロパティです。

/** 
    * @var array $orderRows 
    * 
    * @ORM\OneToMany(targetEntity="PmodOrderRow", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=true)) 
    */ 
    protected $orderRows; 

    protected $totalSum; 

私は私のOrderエンティティ内でこの機能を合計を取得しようとしています。

public function getTotalSum() 
    { 
     $orderRows = $this->getOrderRows(); 
     foreach($orderRows as $row){ 
      $this->totalSum += $row['totalPrice']; 
     } 
     return $this->totalSum; 
    } 

しかし、機能しません。私OrderRowエンティティインサイド

私は、特定の行の$totalPrice性質を持っています。

どうすればいいですか?

+0

エラーが表示されますか?もしそうでなければ、あなたは '$ this-> totalSum'のために何を得ていますか? (何?完全に間違った値?) –

答えて

0

メソッド$this->getOrderRows()は、CollectionPmodOrderRowオブジェクトを返します。データベース行(配列)の配列ではありません。

はこのようにそれを試してみてください。

public function getTotalSum() 
{ 
    $totalSum = 0; 
    foreach($this->getOrderRows() as $row){ 
     $totalSum += $row->getTotalPrice(); 
    } 

    return $totalSum; 
} 

あなたはPmodOrderRowの合計金額のgetterを持っていると仮定すると。

また、$this->totalSumをインクリメントすることはお勧めできません。 getTotalSum()を呼び出すたびに値が増加するため、ローカル変数を使用しました。

+0

ありがとうございません。私は私が間違っていたものを入手してください。私はこのような 'totalSum'を返す場合、それは結構です。 'return $ this-> totalSum = $ totalSum;'? –

+0

@ Mentos93はい、いいですね。 – ShiraNai7

+0

ありがとうございます!私はあなたの助けに感謝します –

関連する問題