removeNonExistentPictures(); // $this->removeNotUsedPictures(); } private function removeNonExistentPictures() { $base = config('image.path'); $it = new FilesystemIterator($base); $fs = new Filesystem(); $files = $fs->allFiles($base); var_dump($files); exit; /** * Suppression des images qui n'existent pas physiquement */ $linesToDelete = Image::whereNotIn('filename', $files)->get(); $delete = 0; foreach ($linesToDelete as $lineToDelete) { $lineToDelete->delete(); $delete++; } $this->info("Images supprimées en base : ".$delete); /** * Suppression des images qui ne sont pas en base */ $pictures = Image::select('filename')->getQuery()->get()->transform(function ($item) { return $item->filename; })->all(); $delete = 0; foreach ($files as $file) { if (!in_array($file, $pictures)) { unlink($base . $file); $delete++; } } $this->info("Images supprimées physiquement : ".$delete); } /** * Suppression des images qui existent physiquement et en base mais qui ne sont pas utilisées */ private function removeNotUsedPictures() { $base = config('picturesPath'); $pictures = Image::whereDoesntHave('section', function ($query) { $query->withTrashed(); })->whereDoesntHave('news', function ($query) { $query->withTrashed(); })->whereDoesntHave('pages', function ($query) { $query->withTrashed(); })->get(); $delete = 0; foreach ($pictures as $picture) { if (is_file($base . $picture->filename)) { unlink($base . $picture->filename); } $picture->delete(); $delete++; } $this->info("Images supprimées car non utilisées : ".$delete); } }