#twig #octobercms #octobercms-plugins #octobercms-backend
#twig #octobercms #octobercms-плагины #octobercms-серверная часть
Вопрос:
я застрял здесь. Надеюсь, кто-нибудь сможет помочь. у меня есть база данных, в которой хранятся покупки, совершенные пользователями в любом проекте.
вот моя таблица в twig
<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
Я хочу выполнить цикл по базе данных и суммировать сумму покупки, где идентификатор проекта тот же?
Ожидал чего-то подобного:
Project ID |Purchase Total
1 |11881
2 |2111
4 |16075
Ответ №1:
Хотя это возможно, Twig не идеален для выполнения подобных вычислений. Код становится довольно запутанным. Вместо этого я бы предложил создать структуру данных в том, onStart()
где вы определяете paid_logs
.
Пример:
function onStart()
{
// ... define $paid_logs and $user
$data = [];
foreach ($paid_logs as $paid_log) {
if ($paid_log->user_id == $user->id amp;amp; $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 %}