Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在我的数据库中更新注册,而不是在Laravel 8中创建新的注册?_Php_Eloquent_Laravel 8 - Fatal编程技术网

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)
——因此它不知道您想要什么记录。您需要首先查询记录(获取它),然后更新它