راکت
Armin Rahmati
Armin Rahmati
توسط Armin Rahmati مطرح شد
حل
3 پاسخ

حذف عکس از فولدر public

سلام دوستان.
من واسه هر آگهی یه گالری تصویر ایجاد کردم که کاربر میتونه حداکثر سه تا عکس اضافه کنه. حالا میخوام وقتی خود آگهی رو حذف کرد، عکس های مربوط به اون آگهی هم از فولدر public حذف بشن که کدمو به صورت زیر نوشتم:

public function destroy(Job $job)
    {
        $gallery = JobGallery::where('job_id', $job->id)->pluck('image');
        if ($gallery) {
            if (File::exists(public_path("{$gallery->image}")))
                File::delete(public_path("{$gallery->image}"));
        }
        $job->delete();
        session()->flash('status', 'آگهی با موفقیت حذف شد');
        return back();
    }

ولی با ارور زیر مواجه میشم:

Property [image] does not exist on this collection instance.

خروجی کد زیر:

dd($gallery = JobGallery::where('job_id', $job->id)->pluck('image'));
Illuminate\Support\Collection {#1298 ▼
  #items: array:3 [▼
    0 => "upload/images/lCOVuJaLAQnROiiKpy32THMzD9j0rhZBtIpOaCYe.jpg"
    1 => "upload/images/4MFGHegVMzvGfNRitYHhDQOWThXBSthfypHHlbjG.jpg"
    2 => "upload/images/A7ziz30KnObKHg7WAYd7Or6VsnZYZJFyl9jJ11rB.jpg"
  ]
  #escapeWhenCastingToString: false
}

ثبت پرسش جدید
رضا جهانگیر
رضا جهانگیر
تخصص :Full-Stack Developer
@rezajahangir4 سال پیشمطرح شد
0

@arminrahmati999
سلام.
کد آقای @MehdiAghighi یه مشکل کوچیک داره، در واقع کدتونو اگه به صورت زیر بنویسید، مشکلتون حل میشه.

foreach ($gallery as $image) {
    if (File::exists(public_path("{$image}")))
        File::delete(public_path("{$image}"));
}

موفق باشید.


مهدی عقیقی
مهدی عقیقی
تخصص :برنامه نویس وب
@MehdiAghighi4 سال پیشمطرح شد
0

سلام ، به خاطر این که هر آگهی چند تا عکس داره ، باید این کد رو بزاری توی لوپ، مثل کد زیر:

foreach ( $gallery->items as $image ) {
    if (File::exists(public_path("{$image}")))
        File::delete(public_path("{$image}"));
}

به جای اون بخش if ($gallery) این رو بزار.
یه خورده اگر دقیق بشی ، متوجه میشی چی کار کردم ولی اگر نفهمیدی بگو بیشتر توضیح بدم.


Armin Rahmati
Armin Rahmati
@arminrahmati9994 سال پیشمطرح شد
0

@MehdiAghighi
همچنان ارور قبلی رو میده.


رضا جهانگیر
رضا جهانگیر
تخصص :Full-Stack Developer
@rezajahangir4 سال پیشمطرح شد
0

@arminrahmati999
سلام.
کد آقای @MehdiAghighi یه مشکل کوچیک داره، در واقع کدتونو اگه به صورت زیر بنویسید، مشکلتون حل میشه.

foreach ($gallery as $image) {
    if (File::exists(public_path("{$image}")))
        File::delete(public_path("{$image}"));
}

موفق باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام