mehrdad70
4 سال پیش توسط mehrdad70 مطرح شد
0 پاسخ

اپدیت مقاله لاراول

سلام دوستان من برای اپدیت مقاله ام میخام وقتی ک اپدیت رو انجام دادم عکس های جدید مقاله بره جایگزین عکسای قبلی بشه و اون قبلی ها هم توی دیتابیس هم توی پوشه storage پاک شه برای حذف عکسهای مقاله من اومدم تو مدل Article از این کوئری استفاده کردم

    public static function booted()
    {
        static::deleting(function(Article $article){
            foreach ($article->images as $image) {
                Storage::delete('public\\' . $image->src);
            }  
            $article->images()->delete();
        });
    }

که کاملا اوکی بود وقتی مقاله هامو حذف میکردم عکسهای مقاله هم از دیتابیس هم از پوشه استوریج پاک میشدن حالا میخام برای اپدیت مقاله از این کد داخل مدل استفاده کنم وقتی مقالم اپدیت شد عکسای جدید جایگزین قبلی ها بشه جوری ک دیگه مجبور نباشم این تیکه کد رو توی متد اپدیت هم بازنویسی کنم و مستقیم بره از مدل بخونه این متد اپدیت منه

    public function update($id, Request $request)
    {
        $article = Article::findOrFail($id);

        $now = Carbon::now();
        $images = [];
        if ($request->hasFile('images')) {            
            foreach ($request->images as $image) {
                $images[] = $image->store("photos/Article/$now->year/$now->month/$now->day", 'public');
            }
            if($article->images){
                foreach($article->images as $image){
                    Storage::delete('public\\' . $image->src);
                }
                $article->images()->delete();
            }
        }
        $article->update([
            'title' => $request->title,
            'slug' => $request->slug,
            'body' => $request->body,
            'user_id' => auth()->id(),
            'image' => $images[0] ?? null,
        ]);
        $article->categories()->sync($request->categories);

        foreach ($images as $key => $image) {
            $article->images()->create([
                'src' => $image,
                'is_main_image' => $key == 0
            ]);
        }
        return redirect(route('articles.index'));
    }

اگه دقت کنید به ناچار برای اینکه اپدیت عکسها صورت بگیره مجبور شدم این تیکه کد رو توی مدل نوشتم بیارم توی متد اپدیت هم بازنویسی کنم

           if($article->images){
                foreach($article->images as $image){
                    Storage::delete('public\\' . $image->src);
                }
                $article->images()->delete();
            }

ک این کار اشتباهیه میخام بدونم چجور میشه از مدل کد رو بخونم دیگه بازنویسیش نکنم ممنون میشم راهنماییم کنید


ثبت پرسش جدید

به همدیگه کمک کنیم

به mehrdad70 کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

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

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