Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Есть таблица 'services' с перечнем услуг, таблица 'researches' с перечнем исследований и таблица 'researches_services' в которой приводится сопоставление id исследований к id услуги. Так же есть таблица направлений 'referrals' и таблица 'referrals_researches' с сопоставлением направлений и исследований. Дело в том, что в направлениях требуется сделать вывод таким образом, что если имеется такой же набор исследований, идентичный набору исследований для услуги, то выводится наименование услуги из services, если сопоставление не найдено - тогда вывести список исследований. Делаю я это следующим образом:
@foreach($referrals as $referral)
<tr>
<td style="text-align: center; white-space: pre-wrap;">{{$referral->id}}</td>
<td style="text-align: center; white-space: pre-wrap;">{{$referral->surname}} {{mb_substr($referral->name, 0, 1)}}. {{mb_substr($referral->patronymic, 0, 1)}}.</td>
<td style="text-align: center; white-space: pre-wrap;">{{$referral->created_at}}</td>
@for($i = 0; $i<count($services); $i++)
@if(($referral->researches->pluck('title')->join(', ')) == ($services[$i]->researches->pluck('title')->join(', ')))
<td>{{$services[$i]->title}}</td>
@else
<td>{{$referral->researches->pluck('title')->join(', ')}}</td>
@endif
@endfor
<td style="text-align: center; white-space: pre-wrap;">{{$referral->researches->sum('price')}} ₽</td>
<td style="text-align: center; white-space: pre-wrap;">{{$referral->user->surname}} {{mb_substr($referral->user->name, 0, 1)}}. {{mb_substr($referral->user->patronymic, 0, 1)}}.</td>
<td style="text-align: center;"><a href="{{route('referrals.show', $referral->id)}}" class="text-muted"><i class="fas fa-search"></i></a></td>
<tr>
@endforeach
Но при таком виде происходит дублирование(?) циклов и слетает верстка. Буду признателен за помощь, как всё это сделать правильно?)
Для наглядности, как вышеуказанный код отрабатывает:
Не в сети
Сначала оффтопик:
- Неудобно читать код с неправильными отступами.
- Вы же видите, что stylе у вас повторяется. Вынесите его в таблицу стилей, зачем этот визуальный шум?
Ваш подход со сравнением списка исследований неверен. Он может дать как ложно положительный, так и ложно отрицательный результат. Возможно это и случается, поэтому происходит "дублирование" и съезжание верстки из-за лишних колонок. Вы же не выходите из цикла при совпадении, а продолжаете искать дальше и, возможно, ещё раз совпадает и выводится.
По-хорошему надо смотреть буквально оказанную услугу, а не исследования. То есть в направлении должна быть ссылка на услугу. Если она не пустая, то выводите название услуги. Если пустая, то выводите список исследований.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Страницы 1