将多行更新为其唯一 ID,并在 laravel 中更改一个值


Update multiple rows to their unique id with one value changed in laravel

我在下面有数组(这个数组中有 50 个元素。 所以下面的 mysql 查询触发 50 次。

$array = [['id'=>1,'result'=>'21.25'],['id'=>2,'result'=>'13.03']]// ... up to 50 elements in this array. so below mysql query fires 50 times.

我就是这样做的。

foreach ($array as $key => $value) {
    $postArray =  ['result' => $value['result']];
    DB::table('table')->where('id',$value['id'])->update($postArray);
}

问:是否可以在一个查询中合并所有内容?

我试过这样,但没有工作,

giving error `"errormsg":"Database error!! preg_replace(): Parameter mismatch, pattern is a string

而替换是一个数组"'

foreach ($array as $key => $value) {
    $postArray[] =  [
        'id' => $value['id'],
        'result' => $value['result']
    ];
}
DB::table('table')->update($postArray);

您可以使用 whereIn() 函数使用相同的数据更新多行。

$idArray = array(1, 2, 3);
$postArray =  ['result' => $value['result']];
DB::table('table')->whereIn('id',$idArray)->update($postArray);

注意:从代码语法来看,我假设您使用的是Laravel框架。所以解决方案适用于拉拉维尔。如果您使用的是其他框架,则可以检查类似的方法。