Eloquent Update功能不会更新所有记录

时间:2017-10-12 22:19:24

标签: laravel laravel-5 eloquent laravel-eloquent laravel-query-builder

我想根据用户ID更新所有用户记录,用户ID重复多次,我希望更新功能更新所有这些事件在这里是我的尝试:

App\Models\HistoryCostEstimation::where(['user_id'=>$user_ID])->update(['currency'=>$currenc]);

但是这段代码只更新一次,是否还有其他方法可以达到要求的目的?

这是表结构 enter image description here

这是表格中的数据样本

enter image description here

2 个答案:

答案 0 :(得分:3)

<强>解决方案:

$user_id = 1;
$records = App\HistoryCostEstimation::where('user_id', $user_id)
                                        ->update(['cost_name' => 'New value']);
  

注意:eloquent where子句不使用字符串参数   数组,还要确保设置了$ fillable字段。那应该做   诀窍。

答案 1 :(得分:0)

我发现错误的地方,问题是我从网络服务中获取查询输入。

想象一下移动应用程序向我发送ID的情况,并根据此ID我在问题中执行了上述查询,但我并没有记住所有结果都是在运行时间之前拍摄的,而不是之前的代码就像

$HistoryCostEstimationID = $request->input('historyCostEstimationID');

  $type = $request->input('type');
  $newValue = $request->input('newValue');  
  $currenc = $request->input('currency');

  $user_ID = App\Models\HistoryCostEstimation::select('user_id')->where('id',$HistoryCostEstimationID)->get();
  App\Models\HistoryCostEstimation::where('user_id', $user_ID)->update(['currency'=>$currenc]);
  App\Models\HistoryCostEstimation::where(['id' => $HistoryCostEstimationID])->update([ $type => $newValue , 'currency' => $currenc]);

但必须是

$HistoryCostEstimationID = $request->input('historyCostEstimationID');

  $type = $request->input('type');
  $uID = $request->input('u_id');
  $newValue = $request->input('newValue');  
  $currenc = $request->input('currency');

  App\Models\HistoryCostEstimation::where('user_id', $uID)->update(['currency'=>$currenc]);
  App\Models\HistoryCostEstimation::where(['id' => $HistoryCostEstimationID])->update([ $type => $newValue , 'currency' => $currenc]);

我的意思是我必须在执行查询之前使用u_id,因为如果不是,它将始终为null