尝试动态更新数据时方法 Collection::save 不存在
Method Collection::save does not exist while trying to update data dynamically
我在 Blade 有这样的表格:
<form role="form" method="POST" action="{{ route('products.post.vars', $product->id) }}">
@csrf
@foreach($attributes as $attribute)
<div class="form-group">
<label for="var_{{$loop->index+1}}">Price</label>
<input class="form-control" type="text" name="var_{{$loop->index+1}}" value="" class="form-control" id="var_toman_{{$loop->index+1}}">
</div>
</form>
现在为了提交此数据并更新 table 中的记录,我编码如下:
try{
$attributes = AttributeProduct::where('product_id',$product->id)->where('attribute_changeable',1)->get();
for($i=0;$i<count($attributes);$i++){
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$attributes->save();
}
}
catch (\Exception $e) {
dd($e->getMessage());
}
但现在我得到这个错误:
方法Illuminate\Database\Eloquent\Collection::保存不存在。
所以这里出了什么问题?我该如何解决这个问题?
您需要使用 $attributes[$i]->save();
保存 currant 属性
try{
$attributes = AttributeProduct::where('product_id',$product->id)->where('attribute_changeable',1)->get();
for($i=0;$i<count($attributes);$i++){
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$$attributes[$i]->save();
}
}
catch (\Exception $e) {
dd($e->getMessage());
}
您需要指定要将数据保存到的索引
try{
$attributes = AttributeProduct::where('product_id',$product->id)
->where('attribute_changeable',1)
->get();
for($i=0;$i<count($attributes);$i++) {
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$attributes[$i]->save();
}
} catch (\Exception $e) {
dd($e->getMessage());
}
我在 Blade 有这样的表格:
<form role="form" method="POST" action="{{ route('products.post.vars', $product->id) }}">
@csrf
@foreach($attributes as $attribute)
<div class="form-group">
<label for="var_{{$loop->index+1}}">Price</label>
<input class="form-control" type="text" name="var_{{$loop->index+1}}" value="" class="form-control" id="var_toman_{{$loop->index+1}}">
</div>
</form>
现在为了提交此数据并更新 table 中的记录,我编码如下:
try{
$attributes = AttributeProduct::where('product_id',$product->id)->where('attribute_changeable',1)->get();
for($i=0;$i<count($attributes);$i++){
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$attributes->save();
}
}
catch (\Exception $e) {
dd($e->getMessage());
}
但现在我得到这个错误:
方法Illuminate\Database\Eloquent\Collection::保存不存在。
所以这里出了什么问题?我该如何解决这个问题?
您需要使用 $attributes[$i]->save();
保存 currant 属性try{
$attributes = AttributeProduct::where('product_id',$product->id)->where('attribute_changeable',1)->get();
for($i=0;$i<count($attributes);$i++){
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$$attributes[$i]->save();
}
}
catch (\Exception $e) {
dd($e->getMessage());
}
您需要指定要将数据保存到的索引
try{
$attributes = AttributeProduct::where('product_id',$product->id)
->where('attribute_changeable',1)
->get();
for($i=0;$i<count($attributes);$i++) {
$iterator = $i + 1;
$attributes[$i]->product_price = $request->input("var_$iterator");
$attributes[$i]->save();
}
} catch (\Exception $e) {
dd($e->getMessage());
}