2013-05-22 92 views
3

我有2個相關的實體 - 類別和費用。費用有一個日期 - 費用制定時。如何總結與學說連接表

類別實體與多個費用實體之間存在一對多的關係,這些實體本身具有名稱(產品)和價格屬性。

我想爲當前月份的單個類別計算所有費用 - >價格屬性的總和。 (我有工作findExpensesForMonthAndCategory方法)

你能幫助我嗎?

類別

class Category 
{ 
    protected $name; 
    protected $expenses; 

    public function __construct() 
    { 
     $this->expenses = new ArrayCollection(); 
    } 
} 

費用

class Expense 
{ 
    protected $category; 
    protected $product; 
    protected $price; 
    protected $date; 
} 
+0

讓我們[繼續聊天討論](http://chat.stackoverflow.com/rooms/30398/discussion-between-nifr-and-faery) – nifr

回答

4

其實有解決這個的2種方式。

解決方案1 ​​

一個getExpenseSum()方法添加到您的類別實體...

class Category 
{ 

// ... 

    public function getExpenseSum() 
    {  
     $sum = 0; 
     foreach ($this->expenses as $expense) { 
      $sum += $expense->getPrice(); 
     } 

     return $sum; 
    } 

現在,您可以輸出這種方式的總和在樹枝:

 {{ category.expenseSum }} 

解決方案2

在您的存儲庫中創建一個方法。

// src/Vendor/YourBundle/Entity/ExpenseRepository 

public function getSumByCategory($category) 
{ 
    $q = $this->createQueryBuilder('e') 
     ->sum('e.price') 
     ->where('e.category = :category') 
     ->setParameter('category', $category) 
     ->getQuery(); 

    return $q->getResult(); 
} 
+2

是不是有什麼辦法可以自動讓學說在實體上做這個查詢?學說知道關係和數據類型 - 所以在新的屬性上使用某種註解來做這件事會很棒。 –