我有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 :(得分:4)
实际上有两种解决方法。
解决方案1
将getExpenseSum()方法添加到Category实体...
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();
}