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 Artisanmake:model generi un nuovo modello.
-m.
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.| Nome del modello | Nome della tabella |
|---|---|
Post | posts |
User | users |
AirTrafficController | air_traffic_controllers |
$table.
Timestamp
Eloquent gestisce automaticamente le colonnecreated_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.
Flusso di esecuzione delle query Eloquent
Ecco come una query comeUser::where()->get() viene eseguita internamente.
Operazioni CRUD di base
Recuperare record (Read)
Recupera tutti i record.Creare record (Create)
Con il metodocreate inserisci un record (serve la configurazione di $fillable).
Aggiornare record (Update)
Recupera un modello, modifica i valori e chiamasave per aggiornare.
update aggiorni più colonne insieme.
Eliminare record (Delete)
Con il metododelete elimini un record.
Metodi di query di base
| Metodo | Descrizione |
|---|---|
Post::all() | Recupera tutti i record |
Post::find($id) | Recupera per ID (restituisce null se non trovato) |
Post::findOrFail($id) | Recupera per ID (restituisce 404 se non trovato) |
Post::where('column', 'value')->get() | Recupera i record che soddisfano la condizione |
Post::where('column', 'value')->first() | Recupera il primo record che soddisfa la condizione |
Post::where('column', 'value')->count() | Conta i record che soddisfano la condizione |
Post::orderBy('created_at', 'desc')->get() | Recupera specificando l’ordinamento |
Post::latest()->get() | Recupera in ordine decrescente per created_at |
Post::limit(10)->get() | Recupera limitando il numero |
Esempio pratico: manipolazione dei dati con il modello Post
Esempio di controller che manipola la tabellaposts creata con la migration.
Ciclo di vita degli eventi del modello
Flusso degli eventi emessi quando chiamisave(). 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.