[英]How to clear Laravel storage folder when migrate refresh with seed option
遷移刷新時如何清除 Laravel 存儲文件夾? 我想在運行命令php artisan migrate:refresh --seed
時清除storage/app/public
文件夾
我嘗試過的:添加(new Filesystem)->deleteDirectory(storage_path('app/public/images'));
在database/seeders/DatabaseSeeder.php
但不工作,當我
我將在這里分享一些片段,您可以將其放入您的database/seeders/DatabaseSeeder.php中,這樣它就可以完成所有工作。 只是不要忘記, 默認情況下您可能會有storage/app/public/.gitignore文件,不需要刪除。 所以這是一個刪除文件和文件的片段,但有例外。
注意:在運行播種機之前運行“ php artisan storage:link ”,以訪問存儲磁盤中的資源。
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Filesystem\Filesystem;
class DatabaseSeeder extends Seeder
{
public function run()
{
$fs = new Filesystem;
// delete directories
$except_folder_names = [
// folder name (storage/app/public/<folder_name>)
];
$folder_paths = $fs->directories(public_path('storage'));
foreach ($folder_paths as $folder_path) {
$folder_name = last(explode('/', $folder_path));
if (!in_array($folder_name, $except_folder_names)) {
$fs->deleteDirectory($folder_path);
}
}
// delete files
$except_file_names = [
'.gitignore',
// file name (storage/app/public/<file_name>)
];
$file_paths = $fs->files(public_path('storage'));
foreach ($file_paths as $file_path) {
$file_name = last(explode('/', $file_path));
if (!in_array($file_name, $except_file_names)) {
$fs->delete($file_path);
}
}
echo "Uploads successfully deleted!\n";
// OTHER SEEDERS...
}
}
有了這個,你可以從storage/app/public中刪除所有的東西(遞歸的文件和文件夾)
在其他情況下,如果您只想清理目錄而不是刪除它們,則可以使用以下內容:
$directory = public_path('storage/' . $folder_name);
$file->cleanDirectory($directory);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.