Usando Laravel può capitare di dover aggiornare le righe
di una tabella senza toccare i timestamp, in particolare lasciando
inalterato il campo updated_at
.
Come fare?
Semplice.. Esiste un flag apposito che, quando impostato,
disattiva l’aggiornamento di updated_at
.
Esempi…
Poniamo che tu voglia modificare un prodotto salvato nella
variabile $product
, lasciando però inalterato il suo
attributo updated_at
, esistono due varianti per
farlo:
Se vogliamo che tutti gli update
su questo oggetto
non modifichino updated_at
, è
sufficiente impostare il flag timestamps
sull'oggetto:
$product->timestamps = false;
$product->save();
Se invece vuoi limitare l’effetto al singolo update, devi
passare il flag nella chiamata di save()
:
$product->save(['timestamps' => false]);
…..E per aggiornamenti multipli?
In questo l’approccio è quello di accedere alla tabella bypassando la classe del modello (Product, nell'esempio), ovvero invece di:
Product::...->update(...)
Userai:
DB::table('products')->...->update(...)
Tutto qui… Troppo facile no?