3

我有 2 个相关实体 - 类别和费用。费用有一个日期 - 费用产生的时间。

Category 实体与多个 Expense 实体具有一对多的关系,这些实体本身具有 name(product) 和 price 属性。

我想计算当月单个类别的所有费用->价格属性的总和。(我有工作 findExpensesForMonthAndCategory 方法)

你能帮我吗?

类别

class Category
{
    protected $name;
    protected $expenses;

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

费用

class Expense
{
    protected $category;
    protected $product;
    protected $price;
    protected $date;
}
4

1 回答 1

5

实际上有两种方法可以解决这个问题。

解决方案 1

将 getExpenseSum() 方法添加到您的 Category 实体...

class Category 
{

// ...

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

        return $sum;
     }

现在您可以通过这种方式在 twig 中输出总和:

     {{ 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();
}
于 2013-05-22T10:13:52.740 回答