get(); if ($packingLists->isNotEmpty()) { $restoredPackagesCount = 0; $restoredPackagesIds = []; // Eager loading packages for all packing lists $packingLists->load(['packages' => function ($query) { $query->onlyTrashed(); }]); foreach ($packingLists as $packingList) { $deletedPackages = $packingList->packages->filter(function ($package) use ($restoredPackagesIds) { // Filter out packages that have already been restored return !in_array($package->id, $restoredPackagesIds); }); if ($deletedPackages->isNotEmpty()) { $groupedPackages = $deletedPackages->groupBy(function ($item) { return $item->only(['type', 'description', 'width', 'height', 'length', 'weight', 'quantity']); }); foreach ($groupedPackages as $group) { $latestPackage = $group->sortByDesc('created_at')->first(); // Check if the package ID is already restored before attempting to restore it if (!in_array($latestPackage->id, $restoredPackagesIds)) { $latestPackage->restore(); Log::info('Package ID: ' . $latestPackage->id . ' has been restored'); $restoredPackagesCount++; $restoredPackagesIds[] = $latestPackage->id; } } } } Log::info('Restored Packages Count: ' . $restoredPackagesCount); } $end = new Carbon(); $elapsedTime = $start->diff($end)->format('%H:%I:%S'); Log::info(Carbon::now() . ': End job - Fix PackingList. ElapsedTime: ' . $elapsedTime . '.'); } }