@lolrofl01

Как отметить все выбранные флажки, если дано 2 массива?

Дано: вывод категорий циклом:
foreach($categories as $category)
 <option value="{{ $category->id }}">{{ $category->name }}</option>
endforeach


У поста есть выбранные категории, им надо дать 'selected'. Но у поста категорий может быть выбрано много. Посты с категориями связаны отношениями и при выводе $post->categories выводится коллекция с данными категорий, которые выбраны для данного поста. Вопрос, можно ли реализовать задумку не используя 2 цикла?

Мне в голову только такой вариант приходит, но я не хочу использовать 2 цикла:
@foreach($categories as $category)
	@php $select = ''; @endphp
	@foreach($post->categories as $category_item)
		@if( $category->id == $category_item->id )
			@php $select = 'selected'; @endphp
			@break;
		@endif
	@endforeach
	<option value="{{ $category->id }}" {{ $selected }}>{{ $category->name }}</option>
@endforeach


Очень кривое решение, но другое почему-то не приходит...
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
neuotq
@neuotq
Прокрастинация
Два цикла точно не нужны.
Где-то делаешь так, коллекцию из айдишников:
$postCategoriesIds = $post->categories->pluck('id')->all();

Ну и потом проверяешь входит ли айдишник в ту коллекцию.
foreach($categories as $category)
 <option value="{{ $category->id }}" @if($postCategoriesIds->contains($category->id)) selected @endif>{{ $category->name }}</option>
endforeach
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы