Skip to main content

Cos’è Eloquent ORM

Laravel include Eloquent, un Object Relational Mapper (ORM). Eloquent semplifica l’interazione con il database e implementa il pattern ActiveRecord. Con Eloquent prepari una classe “modello” corrispondente a ciascuna tabella del database. Tramite il modello puoi recuperare, inserire, aggiornare ed eliminare i record.
Prima di usare Eloquent, configura la connessione al database in config/database.php. Per impostazione predefinita vengono usate le impostazioni DB_* del file .env.

Creazione di un modello

Con il comando Artisan make:model generi un nuovo modello.
Per crearlo insieme alla migration usa l’opzione -m.
I modelli vengono creati nella directory app/Models.

Corrispondenza tra modello e tabella

Eloquent deduce automaticamente il nome della tabella dal nome della classe. Il nome della tabella è la forma plurale in snake_case del nome della classe. Se il nome della tabella non segue la convenzione, indicalo esplicitamente con la proprietà $table.

Timestamp

Eloquent gestisce automaticamente le colonne created_at e updated_at di default. Se nella migration aggiungi $table->timestamps(), i valori vengono impostati automaticamente al salvataggio e all’aggiornamento. Per disabilitare la gestione automatica imposta $timestamps a false.

Protezione da mass assignment

Quando salvi dati in blocco con Eloquent è necessaria la configurazione della protezione da mass assignment.

fillable

Con la proprietà $fillable indichi le colonne che accettano assegnazione.

guarded

Per indicare le colonne da vietare all’assegnazione usa $guarded.
Con $guarded come array vuoto consenti l’assegnazione a tutte le colonne. Se passi direttamente input utente, c’è il rischio che colonne non previste vengano sovrascritte, quindi è consigliato indicare esplicitamente le colonne consentite con $fillable.

Flusso di esecuzione delle query Eloquent

Ecco come una query come User::where()->get() viene eseguita internamente.

Operazioni CRUD di base

Recuperare record (Read)

Recupera tutti i record.
Recupera con condizioni.

Creare record (Create)

Con il metodo create inserisci un record (serve la configurazione di $fillable).
Puoi anche creare l’istanza e assegnare i valori singolarmente.

Aggiornare record (Update)

Recupera un modello, modifica i valori e chiama save per aggiornare.
Con il metodo update aggiorni più colonne insieme.
Puoi anche aggiornare in blocco più record che soddisfano una condizione.

Eliminare record (Delete)

Con il metodo delete elimini un record.
Puoi eliminare direttamente specificando l’ID.

Metodi di query di base

Esempio pratico: manipolazione dei dati con il modello Post

Esempio di controller che manipola la tabella posts creata con la migration.
Scrivendo Post $post come argomento del metodo del controller, Laravel recupera automaticamente il modello dai parametri di route (route model binding). Non devi più scrivere manualmente Post::findOrFail($id).

Ciclo di vita degli eventi del modello

Flusso degli eventi emessi quando chiami save(). Gli eventi cambiano in base al fatto che sia una creazione o un aggiornamento, ma saving e saved vengono emessi in entrambi i casi.

Prossimi passi

Migration

Rivedi come creare con le migration le tabelle usate da Eloquent.
Ultima modifica il 13 luglio 2026