フォームのチェック保持や編集時にcheckedを入れて表示する際に、つまづいたので。
今回は、記事を新規登録する際に
カテゴリー項目を表示(カテゴリーテーブルから取得)
新規登録
@foreach ($categories as $category)
<div class="form-check">
<input name="category[{{$category->id}}]" type="checkbox" value="{{ $category->id }}" {{ old('category.'.$category->id) == $category->id) ? 'checked' : '' }}>
<label class="form-check-label">{{ $category->name }}</label>
</div>
@endforeach
category配列にして、キーをcategoryのidにしておく
{{ (old(‘category.’.$category->id) == $category->id) ? ‘checked’ : ” }}
old(‘category.’.$category->id)と$category->idが同じ場合は、checkedをつける
編集時
@foreach ($categories as $category)
<div class="form-check">
@if ($post->postCategories->contains('id', $category->id))
<input name="category[]" type="checkbox" value="{{ $category->id }}" checked>
@else
<input name="category[]" type="checkbox" value="{{ $category->id }}">
@endif
<label class="form-check-label">{{ $category->name }}</label>
</div>
@endforeach
contains( ) メソッドを使って、指定したidが含まれているか確認
$post->postCategories->contains(‘id’, $category->id)
ある場合は、checkedを入れたinputを表示する
laravelのドキュメントに詳しく書かれています「 contain メソッド 」