- モデルの準備: まず、更新したいテーブルに対応するEloquentモデルを作成します。例えば、ブログ投稿を表す"Post"モデルを作成しましょう。
php artisan make:model Post
- コントローラの作成: 次に、一括更新の処理を行うためのコントローラを作成します。以下は、"BulkUpdateController"という名前のコントローラの例です。
php artisan make:controller BulkUpdateController
- ルートの設定: 作成したコントローラのルートを定義します。ルートファイル(通常は"routes/web.php")に以下のようなルートを追加します。
use App\Http\Controllers\BulkUpdateController;
Route::post('/bulk-update', [BulkUpdateController::class, 'bulkUpdate'])->name('bulk.update');
- コントローラの実装:
"app/Http/Controllers/BulkUpdateController.php"ファイルを開き、以下のように
bulkUpdate
メソッドを実装します。
use App\Models\Post;
use Illuminate\Http\Request;
class BulkUpdateController extends Controller
{
public function bulkUpdate(Request $request)
{
$postsData = $request->input('posts');
foreach ($postsData as $postData) {
$postId = $postData['id'];
$newTitle = $postData['title'];
$newContent = $postData['content'];
Post::where('id', $postId)->update([
'title' => $newTitle,
'content' => $newContent,
]);
}
return redirect()->back()->with('success', 'レコードが一括更新されました。');
}
}
- ビューの作成: 最後に、一括更新フォームを表示するビューファイルを作成します。例えば、"resources/views/bulk-update.blade.php"という名前のファイルを作成し、以下のようなコードを書きます。
以上で、複数のレコードを一括更新する機能が完成しました。一括更新フォームに変更したいレコードの情報を入力し、フォームを送信すると、指定したテーブルのレコードが一括で更新されます。更新が完了したら、リダイレクト先で成功メッセージが表示されます。