Laravel 8.xでの複数のチェックボックスの更新と削除方法


Laravel 8.xで複数のチェックボックスをデータベースで更新したり、削除したりする方法について説明します。以下に具体的な手順を示します。

  1. データベースのテーブルを作成する: 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();
});
  1. ルートを設定する: チェックボックスの更新と削除を処理するために、ルートを設定します。例えば、以下のようなルートを設定します。
Route::post('/items/update', [ItemController::class, 'update']);
Route::post('/items/delete', [ItemController::class, 'delete']);
  1. コントローラを作成する: ルートで指定したコントローラを作成します。例えば、以下のようなコントローラを作成します。
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', 'アイテムが削除されました');
}
  1. ビューを作成する: チェックボックスの一覧を表示し、更新と削除の操作を行うためのビューを作成します。例えば、以下のようなビューファイルを作成します。
<!-- 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で複数のチェックボックスをデータベースで更新したり、削除したりすることができます。