Laavel checkbox를 통한 여러 가지 접근 방식
개시하다
input checkbox 사용하기
1. 複数チェックの取得
2. チェックしたデータを保持する方法
총괄해 보았다.테이블 설계 및 관계
이번에 사용
usersテーブル
과categoriesテーブル
.사용자가 여러 개의category를 가지고 있기 때문에category도 여러 개의user에 연결되어 있습니다
다대다의 관계.
표 디자인
◎usersテーブル
migration public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
});
}
◎categoriesテーブル
migrationpublic function up()
{
Schema::create('categories', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
}
◎category_userテーブル
migrationpublic function up()
{
Schema::create('category_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
$table->integer('category_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users')->OnDelete('cascade');
$table->foreign('category_id')->references('id')->on('categories')->OnDelete('cascade');
$table->timestamps();
});
}
category_사용자 책상 위migration
$table->foreign('user_id')->references('id')->on('users')->OnDelete('cascade');
$table->foreign('category_id')->references('id')->on('categories')->OnDelete('cascade');
그럼 일단 On Delete('cascade')부터 붙이죠.나중에 detach 때 같이 삭제하기 위해서.관계 설계
User.php
public function categories()
{
return $this->belongsToMany(Category::class);
}
여기까지 하면 이제 컨트롤러를 만들 거예요.컨트롤러 디자인
Contorller
public function update(Request $request)
{
$user = Auth::user();
$user->categories()->detach();
$user->categories()->attach($request->category);
$user->categories()
에서 관계를 맺고 attach($request->category)
에서 요청한 분류를 연결합니다.표에 추가
OnDelete('cascade')
는detach에서 삭제할 때 삭제하기 위해서user_id
,category_id
.다음은 블레이드 디자인
블레이드 디자인
나는 이곳이 매우 괴롭다.데이터를 얻을 수 있지만 편집할 때 데이터를 저장하는 것은 매우 어렵다.
처음에old를 사용하여 데이터를 유지하려고 했지만 순조롭지 않아old 포함
checked
을 사용하지 않을 때if문을 만들었다.blade
@foreach ($categories as $category)
@if($user->categories->contains('id', $category->id))
<input type="checkbox" name="category[]" value="{{ $category->id}}" checked>
@else
<input type="checkbox" name="category[]" value="{{ $category->id}}">
@endif
<label for="">
{{ $category->name }}
</label>
@endforeach
지정한 id를 판단하기 위해 저장된 contains()
방법으로 지정한 id가 포함되어 있는지 확인했습니다.다만, old로 데이터를 유지하고 싶어서 세 가지 연산자로 다음과 같은 내용을 써 보았다.
blade
@foreach($categories as $category)
<input type="checkbox" name="category[]" id="" value="{{ $category->id }}"
{{ $category->id == old('category', $user->categories->contains('id', $category->id) ?? '') ? 'checked' : ''}} >
<label for="category">
{{ $category->name }}
</label>
@endforeach
저장 후 편집 화면으로 옮겨도 체크 상자에 체크!각양각색의 방법이 있으니 참고만 하세요!!
참고 자료
Laravel7.저장
Laravel7.관계
Reference
이 문제에 관하여(Laavel checkbox를 통한 여러 가지 접근 방식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/masa9436/articles/aebe1cd4e448f0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)