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

آپدیت عکس در لاراول

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

$estate = Estate::where('id', $index)->first();

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

$images = $this->uploadImages();

اما اگر دستور بالا را به صورت زیر بنویسم اگر عکسی به عکس های قبلی اضافه کنم عکس های قبلی هم باقی میمونن ولی مشکلی که هست عکس های قبلی مجدد آپلود میشن و من نمیخوام این اتفاق بیوفتد.

$images = $this->uploadImages($estate->images);

متد Update:

public function update(Request $request, int $index)
    {
        $estate = Estate::where('id', $index)->first();
        $estateType = $request->input('estateType');
        $type = $request->input('type');
        $images = $this->uploadImages($estate->images);
        $data = array_merge($request->all(), compact('images'));

        // Apartment && Office - Sell
        if (in_array($estateType, ['apartment', 'office']) && $type == 'sell') {
            if (!$request->filled('rent') && !$request->filled('deposit'))
                $estate->update($data);

            return redirect('/UserPanel');
        }
    }

متد uploadImages:

protected function uploadImages($images = [])
    {
        $path = 'uploads/estates/' . date('Y');
        if (request()->hasFile('images') && $files = request()->file('images')) {
            foreach ($files as $file)
                $images[] = $file->store($path);
        }
        return $images;
    }

ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
vahiid
@vahiidrah 3 سال پیش آپدیت شد
0

با سلام

به نظر من جدول images رو جدا کن و یه رابطه 1-n ایجاد کن
اینجوری واسه update کردن،عکس قبلی رو با کد زیر پاک کن

File::delete(THENAMEOFIMAGE)  

از رابطه polymorphic هم واسه جدول images میشه استفاده کرد

با تشکر


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

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