$cardQueryList = [];
foreach($cards as $cardName => $quantity) {
$cardQueryList[] = [
'username' => $user->username,
'card_uid' => $card->uid,
'have_quantity' => $quantity
];
}
Collection::insert($cardQueryList);
Il codice precedente crea nuove righe anche se la riga esiste. Come posso renderlo così se la riga esiste, si aggiorna. E se non crea la riga? Una risposta eloquente o fluente sarebbe ottimale, ma sono aperto a raw se non c'è altro modo.Come inserire o aggiornare la massa in una singola query (non un ciclo di query for) utilizzando Laravel 4.2
Mi piacerebbe fare un aggiornamento/inserimento di massa con una singola query. Non un ciclo di query for per ogni record. Idealmente mi piacerebbe colpire il database una volta per ovvi motivi.
Inoltre Ho già controllato il seguente link:
Insert a new record if not exist and update if exist, laravel eloquent
I lavori di cui sopra per un singolo record di aggiornamento/inserimento. Che se avessi corso con un ciclo for sarebbe molto lento. Sto cercando una risposta che permetta un inserimento/aggiornamento di massa in una singola query.
Nota: sto usando, sia "username" che "card_uid" come chiave. Quindi sostanzialmente quando trovo una riga con detto nome utente e card_uid, vorrei aggiornare la riga corrispondente. Altrimenti crea una nuova riga.
u hanno alcuna idea di come fare questo con raw-sql? non eloquente o querybuilder – M0rtiis
@ M0rtiis: Questa è una buona domanda. Mi ci vorrebbe un po 'per capire. MySQL non è il mio forte. – rotaercz
dovresti leggere questo https://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – M0rtiis