info(Carbon::now() . ' : Started.'); $start = new Carbon(); $duplicatedContainers = Container::select('reference', DB::raw('COUNT(reference) as count')) ->groupBy('reference') ->having('count', '>', 1) ->get(); foreach ($duplicatedContainers as $duplicatedContainer) { $containers = Container::where('reference', $duplicatedContainer->reference)->get(); $containers = $containers->sortByDesc(function ($container) { return $container->packingLists->count(); }); $firstContainer = $containers->shift(); foreach ($containers as $container) { $firstContainer->packingLists()->syncWithoutDetaching($container->packingLists); $container->packingLists()->detach(); $this->info('Deleted container ' . $container->id); $container->delete(); } } $end = new Carbon(); $elapsedTime = $start->diff($end)->format('%H:%I:%S'); $this->info(Carbon::now() . ' : Done. ElapsedTime: ' . $elapsedTime); } }