我想根据用户ID更新所有用户记录,用户ID重复多次,我希望更新功能更新所有这些事件在这里是我的尝试:
App\Models\HistoryCostEstimation::where(['user_id'=>$user_ID])->update(['currency'=>$currenc]);
但是这段代码只更新一次,是否还有其他方法可以达到要求的目的?
这是表格中的数据样本
答案 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