这是下面列出的代码
public function update(Request $request, string $id)
{
// Information validation
$request->validate([
'name' => 'required|max:255',
'price' => 'required|numeric',
'category_id' => 'required|numeric'
]);
$menu = Menu::find($id);
//Validate if a user upload image
if($request->image){
$request->validate([
'image' => 'nullable|file|image|mimes:jpeg,png,jpg|max:5000'
]);
if($menu->image != "noimage.png"){
$imageName = $menu->image;
unlink(public_path('menu_images').'/'. $imageName);
}
$imageName = date('mdYHis').uniqid().'.'.$request->image->extension();
$request->image->move(public_path('menu_images'), $imageName);
} else {
$imageName = $menu->image;
}
$menu->name = $request->name;
$menu->price = $request->price;
$menu->image = $imageName;
$menu->description = $request->description;
$menu->category_id = $request->category_id;
$menu->save();
$request->session()->flash('status', $request->name. ' is updated successfully');
return redirect('/management/menu');
}
错误是在 else 语句之后抛出的。我在这个 if else 语句中试图做的是,如果图像正在请求中上传,并且菜单中已经有该图像并且它不是默认图像,则将其删除。然后我将新图像移动到 menu_images 文件中。如果没有新的图像,我会使用已经存在的图像。最后一步似乎是引发问题的一步?老实说,我真的很迷失,希望有一个解决方案和解释!谢谢你
$menu = Menu::find($id);
通过 id 检索菜单。由于
$menu->image
告诉您无法获取 image
的 null
,所以我们知道 $menu
是 null
,因此该 id 的菜单不存在。您需要查看 id 的值是什么以及您的系统中是否存在该值。查看如果要更新不存在的菜单 ID 会发生什么情况,如果不存在则是否需要插入它,您还需要查看它是如何检索的,是否连接到正确的数据库等等