Как получить сумму строк для последних столбцов? в предварительном цикле

#php #laravel #laravel-blade

#php #laravel #laravel-blade

Вопрос:

Я экспортирую файл Excel, используя Maatwebsite/Laravel-Excel. У меня есть Проекты> Модули (для каждого проекта)> Действия (для каждого модуля)> даты> время (для каждой даты). Я могу отображать время для каждой даты, а затем я суммирую общее количество часов, затраченных на каждое действие, но затем я должен суммировать общее количество часов для всех действий в каждом модуле. Чего я не могу сделать?

Данные Excel

 # Project A #
## Module A      date1 date2 date3  total  total2
### Activity A  1      2     3       6      18 (this is what I wanna display)
### Activity B  1      2     3       6
### Activity C  1      2     3       6
  

Лезвие

 @foreach($project as $pro)
    @foreach($pro->modules as $mod)
        @foreach($activity as $act)
            <tr>
                <td>{{$pro->name}}</td>
                <td>{{$mod->name}}</td>
                <td>{{$act->name}}</td>
                @foreach($time[$pro->id][$mod->id][$act->id] as $log)
                    <td>{{$log}}</td>
                @endforeach
                <td>
                    {{ array_sum($time[$pro->id][$mod->id][$act->id])}}
                    {{-- This is where I get the total --}}
                </td>
                <td>{{-- Here I want to display total2 --}}</td>
            </tr>
        @endforeach
    @endforeach
@endforeach
  

Комментарии:

1. Моим предложением было бы выполнить работу перед рендерингом в blade. Такого рода работу лучше всего выполнять ПЕРЕД отправкой в контекст шаблона. Затем вы можете создать массив, который имеет смысл легко перебирать. У вас есть значения вашего цикла в одном массиве, затем просто отдельное значение для total2, и вы используете $loop-> first check, чтобы включить его в первую строку.

2. sandbox.onlinephpfunctions.com/code/…

3. @Beginner спасибо за усилия, но теперь я получаю это общее итоговое2 7 7 9 16 3 19 4 23 5 28 даже если я получу последнее значение, равное сумме 5 действий, было бы достаточно, но в настоящее время происходит суммирование всех чисел

4. @Trent спасибо за предложение, попробовал бы это 🙂

5. @HashaamAhmed sandbox.onlinephpfunctions.com/code / … извините, я не туда поместил $total = 0;

Ответ №1:

Laravel поставляется с очень мощным инструментом — коллекциями. Вы должны определенно взглянуть на доступные методы. Кроме того, избегайте использования любых вычислений в ваших файлах просмотра и обрабатывайте данные, которые вы хотите вывести, перед передачей их в представление

Комментарии:

1. спасибо за ваш комментарий, в следующий раз был бы осторожен 🙂

Ответ №2:

Суммируйте это на контроллере, добавьте свойство к объектам с именем «sum», а затем отобразите его на блейде

 $activity->setAttribute('sum', 'sumresult');