#php #laravel
#php #laravel
Вопрос:
У меня есть два поля в базе данных с именами «Даты событий» и «Описания событий». Он хранит массив коллекции дат и описаний.
Теперь я хочу показать их на временной шкале таким образом, чтобы каждое описание отображалось перед его датой.
Например, первая дата должна иметь только событие 1. Вторая дата должна иметь только событие 2 и так далее. Но я не получаю желаемого результата. Мои даты отображаются правильно, но описание выглядит не так, как должно быть.
См.
Как я могу вывести одно описание для каждой даты?
Блейд
<div class="expanded-list">
<div id="faq6" class="collapse" data-parent=".faq-list">
@php
$events = explode (",", $row->get_event_dates);
$details = explode (",", $row->get_event_descriptions);
@endphp
<div class="col-md-6">
<div class="main-card mb-3 card">
<div class="card-body">
@foreach ($events as $key => $val)
<div class="vertical-timeline-item vertical-timeline-element">
<div class="vertical-timeline-element-content bounce-in">
@foreach ($details as $key => $detail)
<p>{{ $detail }}</p>
@endforeach
<span class="vertical-timeline-element-date">{{ $val }}</span>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
</div>
Комментарии:
1. Почему они находятся в двух отдельных переменных? Если у вас есть отношения и запросы, настроенные правильно,
$events = Event::with("details")->get()
и все готово. Не добавляйте логику в свое представление, подготовьте переменные в своем контроллере и передайте их.
Ответ №1:
ваш второй цикл foreach повторяется для каждого цикла первого foreach. и выводит каждое значение для каждого элемента первого цикла. вам не нужен второй цикл foreach. предполагая, что у вас одинаковая длина обоих массивов. поэтому просто выполните цикл один раз и получите значение второго массива с помощью key .
@foreach ($events as $key => $val)
<div class="vertical-timeline-item vertical-timeline-element">
<div class="vertical-timeline-element-content bounce-in">
<p>{{ $details[$key] }}</p>
<span class="vertical-timeline-element-date">{{ $va l}}</span>
</div>
</div>
@endforeach
и если у вас почему-то нет одинаковой длины для обоих массивов, вы можете проверить индекс массива
@if (isset($details[$key]))
<p>{{ $details[$key] }}</p>
@else
<p>--</p>
@endif
Комментарии:
1. Потрясающая работа, братан!! Я застрял на этой проблеме в течение последних 4 часов, и вы сэкономили мое время. Да благословит вас Аллах!
2. Не могли бы вы, пожалуйста, немного рассказать о том, как вы заставили его работать с $key другого поля базы данных?
3. Я понял. Спасибо, приятель!