Laravel 5 如何在更新laravel时保持相同的图像,而无需再次选择图像?
我想更新一些记录。虽然我不想更新图像并点击UpdateBuuton,但它显示了错误- 在null上调用成员函数getClientOriginalName() 这是我的控制器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-&
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.您使用两个查询来更新数据,而您只需使用一个即可。我已更新了我的答案,以向您提供最终的完整代码,请看一看。