Laravel 8.xで複数のチェックボックスをデータベースで更新したり、削除したりする方法について説明します。以下に具体的な手順を示します。
- データベースのテーブルを作成する: Laravelのマイグレーション機能を使用して、データベースに必要なテーブルを作成します。例えば、"items"という名前のテーブルを作成する場合、以下のようなマイグレーションファイルを作成します。
php artisan make:migration create_items_table --create=items
作成されたマイグレーションファイルを編集し、必要なカラムを追加します。例えば、以下のようなカラムを追加する場合です。
Schema::create('items', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->boolean('is_checked')->default(false);
$table->timestamps();
});
- ルートを設定する: チェックボックスの更新と削除を処理するために、ルートを設定します。例えば、以下のようなルートを設定します。
Route::post('/items/update', [ItemController::class, 'update']);
Route::post('/items/delete', [ItemController::class, 'delete']);
- コントローラを作成する: ルートで指定したコントローラを作成します。例えば、以下のようなコントローラを作成します。
php artisan make:controller ItemController
作成されたコントローラを編集し、以下のようなメソッドを追加します。
public function update(Request $request)
{
$checkboxes = $request->input('checkboxes'); // チェックボックスの値を取得
foreach ($checkboxes as $id => $isChecked) {
$item = Item::find($id); // IDに基づいてアイテムを取得
$item->is_checked = $isChecked; // チェックボックスの値を更新
$item->save(); // アイテムを保存
}
return redirect()->back()->with('success', 'チェックボックスが更新されました');
}
public function delete(Request $request)
{
$checkboxes = $request->input('checkboxes'); // チェックボックスの値を取得
foreach ($checkboxes as $id) {
$item = Item::find($id); // IDに基づいてアイテムを取得
$item->delete(); // アイテムを削除
}
return redirect()->back()->with('success', 'アイテムが削除されました');
}
- ビューを作成する: チェックボックスの一覧を表示し、更新と削除の操作を行うためのビューを作成します。例えば、以下のようなビューファイルを作成します。
<!-- items.blade.php -->
<form action="{{ route('items.update') }}" method="post">
@csrf
@foreach ($items as $item)
<div>
<input
type="checkbox"
name="checkboxes[{{ $item->id }}]"
value="1"
{{ $item->is_checked ? 'checked' : '' }}
>
{{ $item->name }}
</div>
@endforeach
<button type="submit">更新</button>
</form>
<form action="{{ route('items.delete') }}" method="post">
@csrf
@foreach ($items as $item)
<div>
<input
type="checkbox"
name="checkboxes[]"
value="{{ $item->id }}"
>
{{ $item->name }}
</div>
@endforeach
<button type="submit">削除</button>
</form>
以上の手順に従うことで、Laravel 8.xで複数のチェックボックスをデータベースで更新したり、削除したりすることができます。