option('dry-run'); $query = ProductVariant::query()->whereNull('sku'); $total = $query->count(); if ($total === 0) { $this->info('No variants are missing a SKU.'); return; } $this->info(($dryRun ? '[dry-run] ' : '') . "Backfilling SKUs for {$total} variant(s)..."); $bar = $this->output->createProgressBar($total); $bar->start(); $query->chunkById(500, function ($variants) use ($dryRun, $bar) { foreach ($variants as $variant) { $sku = "SKU-P{$variant->product_id}-V{$variant->id}"; if ($dryRun) { $this->newLine(); $this->line("Variant {$variant->id}: sku => {$sku}"); } else { $variant->update(['sku' => $sku]); } $bar->advance(); } }); $bar->finish(); $this->newLine(); $this->info($dryRun ? 'Dry run complete — no changes were written.' : 'Done.'); } }