Ho cercato ovunque una soluzione a questo, spero che qualcuno abbia già risolto o abbia delle buone idee per migliorare.Laravel 5 aggiorna più righe con valori diversi
Sto utilizzando Laravel 5 e sono arrivato in una situazione in cui ho bisogno di aggiornare molte righe con nuovi valori. In questo momento sto facendo un ciclo for per tutte quelle righe per aggiornarle e vorrei ottimizzarlo in modo da non eseguire molte query SQL. Ecco un esempio di codice:
<?php
//Well, the original code looks better than this, but the concept is the same
$myrows = [0,1,2,3,4,5,6,7,8,9];
$myvalues = [45,543,657,574,234,26457,2462,897,234,89032];
for($i=0;$i<count($myrows);$i++) {
MyClass::where('id', $myrows[$i])->update(['myColumn' => $myvalues[$i]]);
}
?>
Ovviamente questo eseguirà 10 interrogazioni (lo stesso importo delle righe voglio aggiornare), ma voglio farlo con una sola interrogazione, a scopo di ottimizzazione. Sono consapevole della possibilità di aggiornare più righe contemporaneamente con whereIn (...) -> update (...) ma con questo metodo è possibile aggiornare solo tutte le righe con lo stesso valore, non quelle diverse come nella mia esempio.
Grazie in anticipo per qualsiasi aiuto!
se si desidera aggiornare colonne con valori diversi non vedo alcun modo per ottimizzarlo. Dovrebbe essere pianificato dal design del database, se così fosse. – ClearBoth
Sembra, va bene grazie! Solo una domanda, come intendi "pianificato dalla progettazione del database"? Non con codice ma con un diverso tipo di connessione al database? Attualmente sto usando MySQL. O intendi il modo in cui salvi i miei dati in colonne? –
In base alla progettazione del database - dipende dal tipo di dati e dalla necessità di aggiornarli insieme - volevo dire che potresti serializzarli in un unico coulmn. Se ciò è possibile dal tuo database structre e ai suoi scopi usa ex. Opzioni di impostazione – ClearBoth