۲ محمد خضرپور
delete files
جامعه پی اچ پی ایجاد شده در ۱۲ دی ۱۴۰۰

سلام اقای صالحی در این ویدیوی حذف کردن محصولات شما فقط دیتا رو از دیتابیس حذف نمودید و فایل‌ها رو حذف نکردید

من برای حذف فایل‌ها از File::deleteDirectory استفاده کردم .

سلام.

بله درسته.

البته بهتره یک transaction بذارید ابتدا از دیتابیس حذف کنید و بعد فایل مورد نظرو از روی هارد پاک کنید. اگر همه چی موفق بود comit کنید وگرنه roleback بزنید.

بهترین پاسخ
محسن موحد ۱۳ دی ۱۴۰۰، ۱۰:۲۳

استفاده از transaction

use Illuminate\Support\Facades\DB;

متود‌ها:

public function delete($product_id)
    {
        DB::beginTransaction();
        try {
            $product = Product::findOrFail($product_id);
            $product->delete();
            $this->deleteDirectories($product_id);
            DB::commit();
            return back()->with('success', 'محصول با موفقیت حذف شد');
        } catch (\Exception $e) {
            DB::rollBack();
            return back()->with('failed', 'خطا: محصول حذف نشد');
        }
    }
    private function deleteDirectories($product_id)
    {
        $productPath = public_path('products/' . $product_id);
        $storagePath = storage_path('app/local_storage/products/' . $product_id);
        // Delete directories if they exist
        if (File::exists($productPath)) {
            File::deleteDirectory($productPath);
        }
        if (File::exists($storagePath)) {
            File::deleteDirectory($storagePath);
        }
    }

 

علی منظور ۲۴ فروردین ۱۴۰۴، ۱۶:۴۵