Php 如何在laravel中更新多个图像

Php 如何在laravel中更新多个图像,php,laravel,Php,Laravel,我想更新laravel上的多个图像,更新后旧图像将自动从存储器中删除 我尝试使用以下更新方法实现此功能: public function update(Request $request, $id) { $listing = Listing::where('id', $id)->first(); $listing->title = $request->get('title'); $listing->price = $request->

我想更新laravel上的多个图像,更新后旧图像将自动从存储器中删除

我尝试使用以下更新方法实现此功能:

public function update(Request $request, $id)
{

    $listing = Listing::where('id', $id)->first();
    
    $listing->title = $request->get('title');
    $listing->price = $request->get('price');
    $listing->address = $request->get('address');
    $listing->rooms = $request->get('rooms');
    $listing->city = $request->get('city');
    $listing->state = $request->get('state');
    $listing->zip_code = $request->get('zip_code');
    $listing->area = $request->get('area');
    $listing->balcony = $request->get('balcony');
    $listing->bedrooms = $request->get('bedrooms');
    $listing->bathrooms = $request->get('bathrooms');
    $listing->toilet = $request->get('toilet');
    $listing->bathroom_type = $request->get('bathroom_type');
    $listing->kitchen = $request->get('kitchen');
    $listing->parking_space = $request->get('parking_space');
    $listing->description = $request->get('description');
    $listing->featured = $request->get('featured');
    $listing->status = $request->get('status');
    $listing->type = $request->get('type');
    $listing->water_supply = $request->get('water_supply');
    $listing->power_supply = $request->get('power_supply');

    if($request->hasFile('images') != ''){    
        
        $listingImage = ListingImage::findOrFail($id);    
        //add new image
        foreach ($request->file('images') as $image) {
            $image = $request->file('images');
            $imageName = time().'.'.$image->getClientOriginalExtension();
    
            $oldImagepath = $listingImage->image_path;
            // Update the database
            $listingImage->image_path = $imageName;
            // Delete the old photo
            Storage::delete($oldImagepath);
            $listingImage->save();
            $image->move(public_path('images/listing/'.$listing->id),$imageName);
        }
    }

    $listing->save();
    return redirect('/home')->with('success', 'Listing updated!');
}
但是我得到了错误错误 调用数组上的成员函数getClientOriginalExtension()。我的映像存储在ListingImage模型中,我已将默认文件系统配置为

'local' => [
            'driver' => 'local',
            'root' => public_path('images/listing/'),
        

我可以采取哪些步骤来更新我的laravel应用程序中的新图像,在
foreach循环中
您使用的
$request->file('images')
是错误的,并且您将其分配给
$image
变量它应该是:

foreach ($request->file('images') as $image) {
         // remove this line of code
         $image = $request->file('images');
        $imageName = time().'.'.$image->getClientOriginalExtension();

        $oldImagepath = $listingImage->image_path;
        // Update the database
        $listingImage->image_path = $imageName;
        // Delete the old photo
        Storage::delete($oldImagepath);
        $listingImage->save();
        $image->move(public_path('images/listing/'.$listing->id),$imageName);
    }

foreach循环中
您使用的
$request->file('images')
是错误的,您将其分配给
$image
变量,它应该是:

foreach ($request->file('images') as $image) {
         // remove this line of code
         $image = $request->file('images');
        $imageName = time().'.'.$image->getClientOriginalExtension();

        $oldImagepath = $listingImage->image_path;
        // Update the database
        $listingImage->image_path = $imageName;
        // Delete the old photo
        Storage::delete($oldImagepath);
        $listingImage->save();
        $image->move(public_path('images/listing/'.$listing->id),$imageName);
    }

首先,将
$image->getClientOriginalExtension()
更改为
$image->file('images)->getClientOriginalExtension()

第二步,将多个图像保存在如下列中
[“first\u image.jpeg”、“Second\u image.jpeg”]


首先,将
$image->getClientOriginalExtension()
更改为
$image->file('images)->getClientOriginalExtension()

第二步,将多个图像保存在如下列中
[“first\u image.jpeg”、“Second\u image.jpeg”]


我试图删除foreach循环,但仍然得到相同的错误。请解释一下moreno不需要删除foreach循环,只删除$image=$request->file('images')行,因为它修复了在数组问题上对成员函数getClientOriginalExtension()的错误调用,但我的新图像没有显示,我仍然得到旧的图像你在数据库中得到新的图像吗?让我在答案中给你看一些示例代码,你自己定制它。我试图删除foreach循环,但仍然得到相同的错误。请解释一下moreno不需要删除foreach循环,只删除$image=$request->file('images')行,因为它修复了在数组问题上对成员函数getClientOriginalExtension()的错误调用,但我的新图像没有显示,我仍然会得到旧图像您是否会在数据库中得到新图像?让我在答案中向您展示一些示例代码,您可以自己进行自定义。图像路径未存储在数据库中。只是图像名是Store我看到了这个
image\u路径
,我以为这就是图像路径。尝试使用我的代码。它工作正常。检查
dd($listingImage)
foreach
之前,并向我显示结果;图像路径未存储在数据库中。只是图像名是Store我看到了这个
image\u路径
,我以为这就是图像路径。尝试使用我的代码。它工作正常。检查
dd($listingImage)
foreach
之前,并向我显示结果;