Php 如何在我的数据库中更新注册,而不是在Laravel 8中创建新的注册?
我正在尝试更新一个数据库寄存器,而不是得到一个新的寄存器,这是我的更新代码Php 如何在我的数据库中更新注册,而不是在Laravel 8中创建新的注册?,php,eloquent,laravel-8,Php,Eloquent,Laravel 8,我正在尝试更新一个数据库寄存器,而不是得到一个新的寄存器,这是我的更新代码 public function edit(Producto $id){ return view('edit', compact('id')); } public function update(Producto $producto, Request $request){ $request->validate([ 'nombre' => 'required|max:100',
public function edit(Producto $id){
return view('edit', compact('id'));
}
public function update(Producto $producto, Request $request){
$request->validate([
'nombre' => 'required|max:100',
'cantidad' => 'required',
'valor_unidad' => 'required'
]);
$producto->nombre = $request->nombre;
$producto->cantidad = $request->cantidad;
$producto->valor_unidad = $request->valor_unidad;
$producto->valor_total = $request->valor_unidad * $request->cantidad;
$producto->save();
return redirect()->route('inventario.show', $producto);
}
}
我怎样才能解决这个问题?谢谢 你们很接近!您需要确保在请求中传递ID/主键,然后在更新记录之前获取记录:
public function update(Producto $producto, Request $request){
$request->validate([
'id'=> 'required',
'nombre' => 'required|max:100',
'cantidad' => 'required',
'valor_unidad' => 'required'
]);
$record = $producto::findOrFail($request->id);
$record->nombre = $request->nombre;
$record->cantidad = $request->cantidad;
$record->valor_unidad = $request->valor_unidad;
$record->valor_total = $request->valor_unidad * $request->cantidad;
$record->save();
return redirect()->route('inventario.show', $record);
}
它创建新记录而不是更新现有记录的原因是,您没有获得记录本身的实例,而只是访问传递的模型update(Producto$Producto,Request$Request)
——因此它不知道您想要什么记录。您需要首先查询记录(获取它),然后更新它