In questa lezione della guida dedicata a Laravel 4 vediamo che cos’è e come funziona eloquent, il vero cuore pulsante di Laravel.
Introduzione
Una delle sezioni più complesse nella gestione di una qualsiasi applicazione è quella dell’accesso al database per prelevare,elaborare o inserire informazioni di vario tipo. Eloquent minimizza proprio questo problema andando a creare un vero e proprio “motore” utile a sopperire a questo problema. Vediamo un comodo esempio.
Voglio inserire (tramite una query mysql) i valori di titolo e descrizione all’interno della tabella “film” del mio database. Per fare ciò senza laravel avrei dovuto usare una query di questo tipo:
<?php $query = " INSERT INTO film VALUES ( '{$film->titolo}', '{$film->descrizione}' ); ";
Grazie ad eloquent invece il codice si riduce drasticamente a:
<?php //Nuova query $film = new Film; //Associo variabile - valore $film->titolo = 'Titolo film'; $film->descrizione = 'Descrizione film'; //SALVA! $film->save();
Grazie a un semplice comando save() possiamo salvare il nuovo contenuto nel database. Fantastico no?
Creazione di un model da usare con Eloquent
Per poter utilizzare Eloquent il primo passo da seguire è quello di creare un model. Ogni tabella del database deve obbligatoriamente avere un suo model. Per creare il nostro primo model agiamo come segue:
Step 1: create la tabella del vostro database. Se non sapete come fare seguite questa sezione della guida. In questo esempio specifico andiamo a creare una tabella chiamata “films” (plurale!) che andrà a contenere l’elenco dei film.
Step2: Create un file php e chiamatelo Film.php (singolare!)
Step3: Incollate questo codice all’interno di Film.php
<?php class Film extends Eloquent { protected $table = 'films'; public function author() { return $this->belongsTo('User'); } }
Step4: Salvate il file Film.php all’interno della cartella app/models di Laravel 4.
NOTA: Come avrete notato ho messo in risalto la questione singolare/plurale nei nomi dei database. Dovete stare attenti ai nomi che date e usare il plurale per i nomi delle tabelle database e singolare per tutto il resto.
A questo punto, per usare il vostro model usando eloquent potete facilmente agire come segue:
Codice (minimale) per aggiungere un nuovo film al database tramite eloquent
<?php // app/routes.php // Quando viene digitato l'indirizzo add/films Route::get('/add/films', function() { //Nuovo inserimento, eloquent andrà a prelevare automaticamente la tabella esatta. $film = new Film; //Imposto i contenuti del nuovo film $film->titolo = 'The Avengers'; $film->descrizione = 'Noi abbiamo un Hulk.'; //Salvo il film $film->save(); });
Ovviamente questo codice è solo di esempio in quanto vi consiglio di piazzare quel codice all’interno di un controller piuttosto che direttamente nella root. ( Se non sai di cosa parlo visita il capitolo dedicato alle Routes e Controller).
Principali tipi di Query Eloquent
Aggiunta
$film = new Film; //Imposto i contenuti del nuovo film $film->titolo = 'The Avengers'; $film->descrizione = 'Noi abbiamo un Hulk.'; //Salvo il film $film->save();
Modifica
//Recupero elemento da modificare (1 = ID ) $film = Film::find(1); //Nuovi elementi $film->titolo = 'Capitan America'; $film->descrizione = 'Descrizione film'; //Salvo $film->save();
Vi invito a leggere i commenti per capire meglio il (semplice) funzionamento delle query di aggiornamento. In questa sezione tengo tuttavia a farvi notare una cosa:
//Recupero elemento da modificare (1 = ID ) $film = Film::find(1); //Nuovi elementi $film->titolo = 'Capitan America'; $film->descrizione = 'Descrizione film'; //Salvo $film->save(); //Seconda query $film->titolo = 'Capitan America2'; $film->descrizione = 'Descrizione film2'; //Salvo $film->save(); //Terza query $film->titolo = 'Capitan America3'; $film->descrizione = 'Descrizione film3'; //Salvo $film->save(); //Risultato finale // Sarà salvato solo il contenuto della terza query ovvero Capitan America3 // Questo perchè non è stato specificato un nuovo film da modificare. ($film = Film::find(1);)
Vi invito a visionare i commenti direttamente sul codice.
Eliminazione
//Trovo elemento da eliminare $film = Film::find(1); //Cancello $film->delete();
Ricerca / Visualizzazione
Recupero base di un elemento da ID
$film = Film::find(50);
In questo semplice esempio viene recuperato il film che ha l’ID =50.
Recupero elementi con clausola WHERE
//Recupero categoria da ID e a partire del suo status $CatArr = Category::where('id', '=', $id)->where('status', '=', 'Pubblicato')->get();
Come vedete possiamo concatenare i WHERE per filtrare e ottenere esattamente gli elementi di cui abbiamo bisogno.Il comando get() alla fine invece è essenziale in quanto “attua” la query di recupero elementi.
Recupero solo un certo numero di elementi (LIMIT)
La possibilità di limitare gli elementi prelevati dalla query è una funzionalità essenziale. Ecco come limitare il numero di elementi:
$SingleArr = Article::where('permalink', '=', $permalink)->take(1)->get();
In questo caso verrà prelevato un solo record dalla tabella [take(1)].
Recupero Elementi con ordinamento (ORDERBY)
Contenuto bloccato – Scarica la versione completa qui sotto per avere questo contenuto.
Recupero ultimo ID inserito (LAST INSERT)
Contenuto bloccato – Scarica la versione completa qui sotto per avere questo contenuto.
Creare uno slug (permalink) automatico
Contenuto bloccato – Scarica la versione completa qui sotto per avere questo contenuto.
Recupero elementi con paginazione
Contenuto bloccato – Scarica la versione completa qui sotto per avere questo contenuto.
Conclusioni
Capitolo 1: Guida Laravel 4 - Introduzione ai framework, Installazione e configurazione
Capitolo 2: Guida Laravel 4 - Introduzione alle routes per gestire il progetto
Capitolo 3: Guida Laravel 4 - Uso dei Controller
Capitolo 4: Guida Laravel 4 - Uso delle views e del blade template system
Capitolo 5: Guida Laravel 4 - Database e migrazioni
Capitolo 6: Guida Laravel 4 - Eloquent
36 Pagine! Donazione libera con importo minimo di 1€ - Riceverai una mail con un link dove scaricare lo zip, il link è attivo per 2 giorni dalla data di donazione.
Se la guida ti è stata utile condividila sui tuoi social network preferiti. Se invece mi vuoi offrire una pizza effettua una donazione via paypal (trovi il form poco sopra), per ringraziarti potrai scaricare la guida in formato PDF per poterla leggere ovunque vuoi. Man mano che usciranno le lezioni la guida PDF ottenuta tramite la donazione conterrà tutte le lezioni precedenti con qualche interessante aggiunta.
Hai domande o consigli? Commenta questo articolo!