Php 如何使用laravel eloquent从数组数据更新sql中的多行
我试图使用laravel eloquent更新数据库中的多个记录,但在尝试使用数组更新时出错 我不确定如何正确地将数据从数组中获取到更新函数 我正在传递的数组如下所示Php 如何使用laravel eloquent从数组数据更新sql中的多行,php,mysql,laravel,Php,Mysql,Laravel,我试图使用laravel eloquent更新数据库中的多个记录,但在尝试使用数组更新时出错 我不确定如何正确地将数据从数组中获取到更新函数 我正在传递的数组如下所示 public function updateCategoryListData(Request $request){ $checklistdata = $request->get('checklist'); $id = $request->get('checklistid'); $dataset
public function updateCategoryListData(Request $request){
$checklistdata = $request->get('checklist');
$id = $request->get('checklistid');
$dataset = [] ;
foreach($checklistdata as $key =>$value){
$dataset[] = ['checklistid'=>$id,'categoryid' => $key,'isCheck'=>$value];
}
categorylistcontent::where([['checklistid',$id], ['categoryid', $dataset=>['categoryid'] ]])
->update($dataset['isCheck']);
}
我的数据库表看起来像
id | checklistid | categoryid | isCheck |创建|更新|在
我的控制器看起来像这样
public function updateCategoryListData(Request $request){
$checklistdata = $request->get('checklist');
$id = $request->get('checklistid');
$dataset = [] ;
foreach($checklistdata as $key =>$value){
$dataset[] = ['checklistid'=>$id,'categoryid' => $key,'isCheck'=>$value];
}
categorylistcontent::where([['checklistid',$id], ['categoryid', $dataset=>['categoryid'] ]])
->update($dataset['isCheck']);
}
您能否建议我如何使用数组获取“checklistid”和“categoryid”以用作update语句的where子句,然后在更新中设置“isCheck”。您不需要
数据集
数组,而是执行以下操作:
foreach($checklistdata as $key =>$value){
categorylistcontent::where('checklistid',$id)->where('categoryid',$key)
->update(['isCheck'=>$value]);
}
您不能只使用一个查询来实现这一点,但可以使用两个查询来实现这一点。例如:
$check = categorylistcontent::query();
$notCheck = categorylistcontent::query();
foreach ($request->checklist as $item) {
$query = $item['isCheck'] === 1 ? 'check' : 'notCheck';
$$query->orWhere(function($q) use($item) {
$q->where('checklistid', $item['checklistid'])->where('categoryid', $item['categoryid']);
}
}
$check->update(['check' => 1]);
$notCheck->update(['check' => 1]);
我还没有测试过这段代码,但我认为这将有助于您了解这一点。您需要通过将其放入foreach循环来更新多行 例如:
我要传递的数组看起来像这样
你指的是哪个数组啊,我从来都不知道拉威尔在你更新时能自动读取数组。非常感谢。我会尝试这种方法,谢谢!如何像这样更新<代码>ID:array(size=3)0=>int31=>int12=>int2值:array(size=3)0=>float01=>float02=>float0