2016-07-14 96 views
6

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!

+0

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

+0

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? –

+0

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

risposta

1

Non è il caso di Laravel QueryBuilder. Se potessi fare le tue cose in una sola query SQL, potresti quasi farlo con Laravel.

+0

Dopo aver provato a farlo con query SQL raw, sono giunto alla stessa conclusione. Grazie ! –

+0

Haha, quindi contrassegnarlo come corretto. : D – Einsamer

+2

Questa risposta non specifica cosa e come fare l'aggiornamento di più righe. – Shnd