سلام خدمت دوستان.
کاربر هنگام ثبت ملک علاوه بر مشخصات ملکی که وارد میکند، میتواند ملک خود را بدون عکس ثبت کند یا حداکثر ۳ عکس برای ملک خود انتخاب کند.
حالا فرض کنید در هنگام ثبت ملک، کاربر برای ملک خود ۲ عکس انتخاب کرده است و آن را ثبت کرده است. میخوام وقتی کاربر وارد قسمت ویرایش شد بتواند اطلاعاتی که زمان ثبت ملک وارد کرده است را مشاهده کند که با استفاده از کد زیر این اتنفاق میوفتد.
$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;
}
ممنون میشم راهنمایی کنید.
با سلام
به نظر من جدول images رو جدا کن و یه رابطه 1-n ایجاد کن
اینجوری واسه update کردن،عکس قبلی رو با کد زیر پاک کن
File::delete(THENAMEOFIMAGE)
از رابطه polymorphic هم واسه جدول images میشه استفاده کرد
با تشکر
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟