Как получить СУММУ столбца на основе общего значения (id) в другом столбце в octobercms

#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 %}