2016-04-23 29 views
1

改变了我有以下阵列(50种元素在该数组中。所以下面MySQL查询触发50次)。在DB更新多行其独特的ID与一个值laravel

更新
$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); 

回答

0

您可以使用其中()函数具有相同的数据来更新多行。

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

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

+0

对不起,它不会在我的情况下工作:( –

+0

为什么?你得到任何错误? – Krunal

+0

他的情况是执行更新为50个唯一的id与50个新的数据。 –

相关问题