【问题标题】:Method Illuminate\Database\Eloquent\Collection::save does not exist方法 Illuminate\Database\Eloquent\Collection::save 不存在
【发布时间】:2021-09-08 14:20:48
【问题描述】:

更新数据库时遇到问题

错误:方法 Illuminate\Database\Eloquent\Collection::save 不存在。

控制器:

 public function actualizar(Request $request){
    
    $nuevoIngreso = \App\Models\Servicio::all();
    $nuevoIngreso->costo = $request->costo;
    $nuevoIngreso->duracion = $request->duracion;
    $nuevoIngreso->mantenimiento = $request->mantenimiento;
    $nuevoIngreso->save();
    return redirect('servicios')->with('mensaje', 'Ficha Actualizada.');

}

blade.php

         <form method="POST" action="{{ route('actualizar') }}">
                {{method_field('PUT')}}
@csrf

                    @foreach ($servicios as $costo)
<h1 class="text-center text-primary">  {{$costo->tipo}} </h1>
                  <div class="form-group row">
                    <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Costo</label>
                    <div class="col-md-10">
                      <input class="form-control" type="text" value="{{$costo->costo}}">
                
                    </div>
                    <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Duración</label>
                    <div class="col-md-10">
                      <input class="form-control" type="text" value="{{$costo->duracion}}" id="example-text-input">
                    </div>
                    <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Mantenimiento</label>
                    <div class="col-md-10">
                      <input class="form-control" type="text" value="{{$costo->mantenimiento}}" id="example-text-input">
                    </div>
                  </div>
                 <hr>
               @endforeach

               <button type="submit" class="btn btn-success float-right" float-rightdata-toggle="sweet-alert" data-sweet-alert="success">SAVE</button>
                </form>

请帮忙

【问题讨论】:

    标签: laravel laravel-5 laravel-8


    【解决方案1】:

    错误很明显。你正在调用静态方法all()。所以它应该是

      $nuevoIngreso =new \App\Models\Servicio();
        $nuevoIngreso->costo = $request->costo;
        $nuevoIngreso->duracion = $request->duracion;
        $nuevoIngreso->mantenimiento = $request->mantenimiento;
        $nuevoIngreso->save();
    

    因此,如果您正在考虑更新特定记录,请按 id 或任何列查找

     $nuevoIngreso =new \App\Models\Servicio::find($id);
            $nuevoIngreso->costo = $request->costo;
            $nuevoIngreso->duracion = $request->duracion;
            $nuevoIngreso->mantenimiento = $request->mantenimiento;
            $nuevoIngreso->save();
    

    更新

    <form method="POST" action="{{ route('actualizar') }}">
        {{method_field('PUT')}}
        @csrf
    
        @foreach ($servicios as $key=>$costo)
            <h1 class="text-center text-primary">  {{$costo->tipo}} </h1>
            <input class="form-control" type="hidden" value="{{$costo->id}}" name="service[{{$key}}][id]">
            <div class="form-group row">
                <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Costo</label>
                <div class="col-md-10">
                    <input class="form-control" type="text" value="{{$costo->costo}}" name="service[{{$key}}][costo]">
    
                </div>
                <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Duración</label>
                <div class="col-md-10">
                    <input class="form-control" type="text" value="{{$costo->duracion}}" id="example-text-input" name="service[{{$key}}][duracion]">
                </div>
                <label for="example-text-input" class="col-md-2 col-form-label form-control-label">Mantenimiento</label>
                <div class="col-md-10">
                    <input class="form-control" type="text" value="{{$costo->mantenimiento}}" id="example-text-input" name="service[{{$key}}][mantenimiento]">
                </div>
            </div>
            <hr>
        @endforeach
    
        <button type="submit" class="btn btn-success float-right" float-rightdata-toggle="sweet-alert" data-sweet-alert="success">SAVE</button>
    </form>
    

    然后在控制器中

    foreach($request->service as $key=>$value){
    
     $nuevoIngreso =new \App\Models\Servicio::find($value['id']);
     if($nuevoIngreso){
     $nuevoIngreso->costo = $value['costo'];
     $nuevoIngreso->duracion = $value['duracion'];
     $nuevoIngreso->mantenimiento = $value['mantenimiento'];
     $nuevoIngreso->save();
     }
    }
    

    【讨论】:

    • 如果我没有列 ID 我无法更新?
    • @jererosas .. 如果您正在创建新的 Servicio,那么您可以使用第一个或者通过 id 查找,或者您必须提及您需要保存数据的 coumn base。您能告诉我您到底是什么想用那个方法做
    • 是全部记录还是特别。如果特别需要检查什么条件
    • 什么错误。也在循环之前尝试 dd($request->all()) 并发布它
    • 你能 dd($request->all())
    猜你喜欢
    • 2020-11-21
    • 2020-11-13
    • 2019-12-11
    • 2020-02-04
    • 2019-11-12
    • 2019-05-24
    • 2019-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多