#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');