方法 Illuminate\Database\Eloquent\Collection::save 不存在
Posted
技术标签:
【中文标题】方法 Illuminate\\Database\\Eloquent\\Collection::save 不存在【英文标题】: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>
请帮忙
【问题讨论】:
【参考方案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())以上是关于方法 Illuminate\Database\Eloquent\Collection::save 不存在的主要内容,如果未能解决你的问题,请参考以下文章
GroovyGroovy 扩展方法 ( 扩展静态方法示例 | 扩展实例方法示例 | 扩展实例方法与扩展静态方法代码相同 )