Laravel 5 如何在更新laravel时保持相同的图像,而无需再次选择图像?

Laravel 5 如何在更新laravel时保持相同的图像,而无需再次选择图像?,laravel-5,Laravel 5,我想更新一些记录。虽然我不想更新图像并点击UpdateBuuton,但它显示了错误- 在null上调用成员函数getClientOriginalName() 这是我的控制器 public function update(Request $request) { $participants = new participants; $file = $request->file("select_file"); if($request-&

我想更新一些记录。虽然我不想更新图像并点击UpdateBuuton,但它显示了错误-

在null上调用成员函数getClientOriginalName()

这是我的控制器

public function update(Request $request)
    {
      $participants = new participants;

         $file = $request->file("select_file");

          if($request->hasfile("select_file"))
          {
            $file->move("public/images/",$file->getClientOriginalName());
          }

            $id                   = $request->id;
            $First_name          =  $request->First_name;
            $Last_name           =  $request->Last_name;
            $Date_of_Birth       =  $request->Date_of_Birth;
            $GST_no             =  $request->GST_no;
            $email              =  $request->email;
            $Mobile_No           =  $request->Mobile_No;
            $Company_name        =  $request->Company_name;
            $Address             =  $request->Address;
            $State              =  $request->State;
            $City               =  $request->City;
            $Pincode             =  $request->Pincode;
            $Country             =  $request->Country;
            $Amount              =  $request->Amount;
            // $Image                = $request->Image;
            $Image                = $file->getClientOriginalName();


    DB::table('participants')
     ->where('id',$id )
    ->update(['First_name'=>$First_name,'Last_name'=>$Last_name,'Date_of_Birth'=>$Date_of_Birth,'GST_no'=>$GST_no,'email'=>$email,'Mobile_No'=>$Mobile_No,'Company_name'=>$Company_name,'Address'=>$Address,'State'=>$State,'City'=>$City,'Pincode'=>$Pincode,'Country'=>$Country,'Amount'=>$Amount,'Image'=>$Image]);


    $participants->update();



    session()->flash('success','Data Updated successfully!');
    return redirect()->back();
    //return back()->with('error','Update Data successfully!');
    }
查看页面

<div class="form-group row">
    <label for="File" class="col-md-2 col-form-label text-md-left">{{ __('Image') }}</label>
       <div class="col-md-10">
      <input type="file" name="select_file" class="form-control" value="{{$input[0]->Image}}">
       <img src="/public/images/{{$input[0]->Image}}" alt="Image not Found" style="width:100px; height:100px;" />
      </div>
    </div>

{{{('Image')}
Image}“alt=”Image not Found“style=”width:100px;高度:100px;" />

我希望使用以前的图像更新数据(因为我不想更新图像)。

进行如下更改:

$file = $request->file("select_file");

if($request->hasfile("select_file"))
{
    $file->move("public/images/",$file->getClientOriginalName());
    $Image                = $file->getClientOriginalName();
}

$id                   = $request->id;
$First_name          =  $request->First_name;
$Last_name           =  $request->Last_name;
$Date_of_Birth       =  $request->Date_of_Birth;
$GST_no             =  $request->GST_no;
$email              =  $request->email;
$Mobile_No           =  $request->Mobile_No;
$Company_name        =  $request->Company_name;
$Address             =  $request->Address;
$State              =  $request->State;
$City               =  $request->City;
$Pincode             =  $request->Pincode;
$Country             =  $request->Country;
$Amount              =  $request->Amount;
// $Image                = $request->Image;

现在,
$file->getClientOriginalName();
将仅在上载文件时调用。

进行如下更改:

$file = $request->file("select_file");

if($request->hasfile("select_file"))
{
    $file->move("public/images/",$file->getClientOriginalName());
    $Image                = $file->getClientOriginalName();
}

$id                   = $request->id;
$First_name          =  $request->First_name;
$Last_name           =  $request->Last_name;
$Date_of_Birth       =  $request->Date_of_Birth;
$GST_no             =  $request->GST_no;
$email              =  $request->email;
$Mobile_No           =  $request->Mobile_No;
$Company_name        =  $request->Company_name;
$Address             =  $request->Address;
$State              =  $request->State;
$City               =  $request->City;
$Pincode             =  $request->Pincode;
$Country             =  $request->Country;
$Amount              =  $request->Amount;
// $Image                = $request->Image;

现在,
$file->getClientOriginalName();
将仅在上载文件时调用。

更像是您应该仅在上载新图像时更改图像,否则保持不变

$file=$request->file(“选择文件”)

因为您稍后在update语句中使用了
$Image
变量,如果在
if
语句中仅定义了$Image,则会出现未定义的错误

或者您可以采取更好的方法来增强您的整体脚本,如下所示:

public function update(Request $request)
{
    $id = $request->id;
    $update = [   
        'First_name' => $request->First_name,
        'Last_name' => $request->Last_name,
        'Date_of_Birth' => $request->Date_of_Birth,
        'GST_no' => $request->GST_no,
        'email' => $request->email,
        'Mobile_No' => $request->Mobile_No,
        'Company_name' => $request->Company_name,
        'Address' => $request->Address,
        'State' => $request->State,
        'City' => $request->City,
        'Pincode' => $request->Pincode,
        'Country' => $request->Country,
        'Amount' => $request->Amount
    ];

    $file   = $request->file("select_file");
    if ($request->hasfile("select_file")) {
        $file->move("public/images/", $file->getClientOriginalName());
        $update['Image'] = $file->getClientOriginalName();
    }
    DB::table('participants')->where('id', $id)->update($update);

    session()->flash('success', 'Data Updated successfully!');
    return redirect()->back();
}

更像是你应该只在上传一个新的图片时才更改它,否则就保持原样

$file=$request->file(“选择文件”)

因为您稍后在update语句中使用了
$Image
变量,如果在
if
语句中仅定义了$Image,则会出现未定义的错误

或者您可以采取更好的方法来增强您的整体脚本,如下所示:

public function update(Request $request)
{
    $id = $request->id;
    $update = [   
        'First_name' => $request->First_name,
        'Last_name' => $request->Last_name,
        'Date_of_Birth' => $request->Date_of_Birth,
        'GST_no' => $request->GST_no,
        'email' => $request->email,
        'Mobile_No' => $request->Mobile_No,
        'Company_name' => $request->Company_name,
        'Address' => $request->Address,
        'State' => $request->State,
        'City' => $request->City,
        'Pincode' => $request->Pincode,
        'Country' => $request->Country,
        'Amount' => $request->Amount
    ];

    $file   = $request->file("select_file");
    if ($request->hasfile("select_file")) {
        $file->move("public/images/", $file->getClientOriginalName());
        $update['Image'] = $file->getClientOriginalName();
    }
    DB::table('participants')->where('id', $id)->update($update);

    session()->flash('success', 'Data Updated successfully!');
    return redirect()->back();
}

谢谢,但它不起作用。当我更新时,图像字段每次都变为空。:(您需要通过图像路径或您在数据库中保存的任何内容发送图像,以供图像参考“image“在更新中,这样您就可以维护它。如果您在更新时将null作为映像发送,那么它当然会更新为null,并且您每次更新时都会丢失映像,这是有意义的吗?谢谢,但它不起作用。当我更新时,映像字段每次都变为null:”(您需要通过图像路径或您保存在数据库中的任何内容进行发送,以便在更新时作为“图像”作为图像参考,这样您就可以对其进行维护。如果您在更新时将null作为图像发送,当然它将更新为null,并且您每次更新时都会丢失图像,这是有意义的吗?错误生成:ErrorException(请注意)未定义变量:Image@Shallokikundu您是否取消了最后一个$image变量的注释?,if条件下只有一个$image变量。不,这是我所犯的错误。感谢您的解决方案生成错误:ErrorException(请注意)未定义变量:Image@Shallokikundu您是否取消了最后一个$image变量的注释?,在if条件下只有一个$image变量。不,这是我犯的错误。感谢您的解决方案您的解决方案是一个有效的解决方案,但由于以下三个原因可以做得更好:1.您的代码可以组织得更紧凑。2.You正在初始化“参与者”当您使用查询生成器进行更新时,您无论如何都不会使用的模型,因此这是没有原因的。3.您使用两个查询来更新数据,而您只需使用一个即可。我已更新了我的答案,为您提供了最终的完整代码,请看一看。您的解决方案是可行的,但由于以下三个原因可以改进:1。您的代码可以组织起来,使其更加紧凑。2.您正在初始化“参与者”当您使用查询生成器进行更新时,您无论如何都不会使用的模型,因此这是没有理由的。3.您使用两个查询来更新数据,而您只需使用一个即可。我已更新了我的答案,以向您提供最终的完整代码,请看一看。