2016-04-23 5 views
1

I unter Array haben (50 Elemente in diesem Array. So unter mysql query 50mal abfeuert.) In DB zu aktualisierenaktualisiert mehrere Zeilen, um ihre eindeutigen ID mit einem Wert in Laravel geändert

$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. 

Und ich bin so zu tun.

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

Frage: Ist es möglich, alle in einer Abfrage zu fusionieren?

ich so versucht, aber nicht funktioniert,

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

während Ersatz ist ein Array "`

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

Antwort

0

Sie verwenden können, wobei() Funktion mehrreihige mit gleichen Daten zu aktualisieren.

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

Hinweis: Von der Codesyntax habe ich angenommen, dass Sie Laravel Fram verwenden ewerk. Also gilt die Lösung für Laravel. Wenn Sie ein anderes Framework verwenden, können Sie eine ähnliche Methode dafür prüfen.

+0

Tut mir leid, es wird nicht in meinem Fall funktionieren :( –

+0

Warum? Erhalten Sie einen Fehler? – Krunal

+0

sein Fall war Updates für 50 eindeutige ID mit 50 neuen Daten durchführen. Nicht 50 ID für 1 neue Daten –