2016-04-23 73 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個新的數據。 –