option('dry-run'); $memberRows = DB::table('meetup_user')->where('is_leader', false)->count(); $missingCreators = Meetup::query() ->whereNotNull('created_by') ->whereDoesntHave('users', function ($query): void { $query->whereColumn('users.id', 'meetups.created_by'); }) ->count(); if ($dryRun) { $this->info("Dry-Run: {$memberRows} Mitglieder würden zu Leadern befördert."); $this->info("Dry-Run: {$missingCreators} fehlende Ersteller-Mitgliedschaften würden ergänzt (als Leader)."); return Command::SUCCESS; } DB::table('meetup_user')->where('is_leader', false)->update(['is_leader' => true]); $ensured = 0; Meetup::query() ->whereNotNull('created_by') ->chunkById(200, function ($meetups) use (&$ensured): void { foreach ($meetups as $meetup) { $meetup->users()->syncWithoutDetaching([ $meetup->created_by => ['is_leader' => true], ]); $ensured++; } }); $this->info("{$memberRows} Mitglieder zu Leadern befördert."); $this->info("Ersteller-Leaderschaft für {$ensured} Meetups sichergestellt."); return Command::SUCCESS; } }