如何根据octobercms中其他列的公共值(id)获取列的SUM



我被困在这里了。希望有人能帮忙。我有一个数据库,可以存储任何项目的已购买用户。

这是我在树枝的桌子

<tbody>
{% for paid_log in paid_logs %}
{% paid_log.user_id == user.id and paid_log.status == 2 %}
<tr>
<td>{{paid_log.project.name }}</td> 
<td>{{paid_log.amount }}</td>

</tr>

{% endif %}
{% endfor %}
</tbody>

结果

|Project ID| Purchase Amount|
1          |1000
1          |1010
2          |2111
4          |9954
1          |9871
4          |6121 

我想在数据库中循环并总结项目ID相同的采购金额?

期待这样的东西:

Project ID |Purchase Total
1          |11881
2          |2111
4          |16075

尽管可能,Twig并不适合进行这样的计算。代码变得相当混乱。相反,我建议在定义paid_logsonStart()中创建数据结构。

示例:

function onStart()
{
// ... define $paid_logs and $user
$data = [];
foreach ($paid_logs as $paid_log) {
if ($paid_log->user_id == $user->id && $paid_log->status == 2) {
if (!isset($data[$paid_log->project_id])) {
$data[$paid_log->project->id] = 0;
}
$data[$paid_log->project->id] += $paid_log->amount;
}
}
$this['data'] = $data;
}

然后,在你的Twig中,你可以简化:

{% for project_id, amount in data %}
{{ project_id }} | {{ amount }}
{% endfor %}

最新更新