Model::withoutEvents for the migration that must not fire them

A backfill that saves forty thousand models fires every observer forty thousand times, which usually means forty thousand search index updates and a queue that will not drain until Thursday.

Order::withoutEvents(function () {
    Order::where('legacy', true)->cursor()->each(function ($order) {
        $order->normaliseAddress();
        $order->save();
    });
});

// and the reindex, once, afterwards
Artisan::call('search:import', ['model' => Order::class]);

Suppressing the events and then doing the derived work in one deliberate pass is almost always faster and always more predictable. The risk is forgetting the second half, which leaves the index stale in a way nothing detects — so the reindex belongs in the same script rather than in a ticket. Note that a mass update() on the query builder already fires nothing, which is the same behaviour arrived at by accident rather than on purpose.