Cos’è Laravel Eloquent, come si usa, tutorial con esempi

Il framework PHP Laravel include Eloquent Object Relational Mapper (ORM), che fornisce un modo estremamente semplice per comunicare con un database.
Laravel e Eloquent aiutano a velocizzare lo sviluppo di applicazioni e piattaforme, fornendo una soluzione adeguata alla maggior parte dei problemi. I requisiti vengono affrontati con uno sviluppo più rapido, oltre a un codice ben organizzato, riutilizzabile, gestibile e scalabile.
Come funziona Eloquent
Gli sviluppatori possono lavorare in Eloquent
con più database in modo efficiente utilizzando un’implementazione ActiveMethod. È un modello architettonico in cui il modello creato nella struttura Model-View-Controller (MVC) corrisponde a una tabella nel database. Il vantaggio è che i modelli eseguono operazioni di database comuni senza codificare lunghe query SQL. I modelli consentono di eseguire query sui dati nelle tabelle e di inserire nuovi record nelle tabelle. Il processo di sincronizzazione di più database in esecuzione su sistemi diversi è semplificato. Non è necessario scrivere query SQL. Tutto quello che devi fare è definire le tabelle del database e le relazioni tra di loro, e Eloquent farà il resto del lavoro.
Preparazione di Laravel
Apprezzare l’utilità di Eloquent ORM, e comprendere l’ecosistema è un must. I passaggi per iniziare:
- Installa Laravel da getcomposer.org, per far questo segui le istruzioni leggendo qui
- Creare
migration
utilizzando la consoleArtisan
- Creare modelli
eloquent
- eseguire i
seed
del database
Artisan Console
è il nome dell’interfaccia della riga di comando inclusa in Laravel. Fornisce una serie di comandi utili da utilizzare durante lo sviluppo dell’applicazione. È guidato dal potente componente Symfony Console
.
Per visualizzare un elenco di tutti i comandi Artisan disponibili, puoi utilizzare il comando list:
php artisan list
Tutti i comandi vengono forniti con una descrizione concisa dei suoi argomenti e opzioni. Questo è mostrato in una schermata di “aiuto”. Per visualizzare una schermata di aiuto, è sufficiente far precedere il nome del comando da “help” come mostrato:
php artisan help migrate
Migration
La migration è un processo di gestione del database scrivendo PHP anziché SQL
. Fornisce un modo per aggiungere il controllo della versione al database.
Per creare una migrazione, basta eseguire il seguente comando:
php artisan make:migration create_student_records
Questo crea il file di migrazione. Nel tuo editor di testo, apri il file appena creato nella cartella database\migrations
:
<?php
use IlluminateSupportFacadesSchema;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreateStudentRecordsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('student__records', function (Blueprint $table) {
$table->increments('id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('student__records');
}
}
Il codice è una classe con lo stesso nome ‘create student records
‘, e ha due metodi: up e down. Il metodo up dovrebbe apportare modifiche al database; quindi ogni volta che esegui la migrazione del tuo database, verrà eseguito qualsiasi codice presente nel metodo up. D’altra parte, il metodo down dovrebbe ripristinare tali modifiche al database; quindi ogni volta che esegui il rollback
della migration
, il metodo down dovrebbe annullare ciò che ha fatto il metodo up. All’interno del metodo up
c’è lo schema builder utilizzato per creare e manipolare le tabelle. Cosa succede se annulli alcune delle tue migrazioni? Tutto quello che devi fare è implementare il seguente comando:
php artisan migrate:rollback
E ritirerà l’ultima migration
che è stata implementata. Inoltre, puoi ripristinare completamente il database eseguendo:
php artisan migrate:reset
Questo annullerà tutte le tue migrazioni.
Definizione di modelli di Eloquent
Al termine della migrazione del database, il processo successivo è il seeding
. Eloquent
entra in gioco poiché il seeding
è l’inserimento di record nel nostro database. Quindi dovrai creare i modelli prima di popolare il database. Ogni tabella di database ha un modello corrispondente che viene utilizzato per interagire con tale tabella. I modelli ti consentono di interrogare i dati nelle tue tabelle, nonché di inserire nuovi record nella tabella. Il modo più semplice per creare un’istanza del modello è utilizzare il seguente comando:
php artisan make:model Student
Di seguito è mostrato un esempio di modello Student
, che può essere utilizzato per recuperare e archiviare informazioni dalla tabella del database del nostro studente:
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Student extends Model
{
//
}
Quando si genera un modello e allo stesso tempo si desidera generare una migrazione del database, è possibile utilizzare l’opzione –migration
o -m
:
php artisan make:model Student --migration
php artisan make:model Student -m
Seeders
I seeder complessivi sono un insieme speciale di classi che ci consentono di popolare il nostro database più e più volte con gli stessi dati esatti. Implementiamo il seguente comando:
php artisan make:seeder StudentsRecordSeeder
Nell’editor di testo, sotto la cartella seeds, apri il file appena creato con nome file: StudentsRecordSeeder.php
. Come puoi vedere, questa è solo una classe molto semplice con un singolo metodo chiamato run
().
<?php
use IlluminateDatabaseSeeder;
class StudentsRecordSeeder extends Seeder
{
/**
* Run the database seeds
* @return void
*/
public function run()
{
//
}
}
Il codice è solo un involucro attorno a una classe di comandi della console, creata appositamente per aiutare con l’attività di seeding
. Modifica il codice e poi salvalo.
public function run()
{
echo 'Seeding!';
}
E passando al terminale:
php artisan db:seed --class=StudentsRecordSeeder
Ora puoi popolare la tabella con alcune voci ed eseguire:
php artisan db:seed --class=class=StudentsRecordSeeder
Qui puoi continuare a eliminare, aggiungere, modificare le voci nel DB, quindi ripristinarle con un semplice comando.
CRUD con Laravel Eloquent
Le operazioni CRUD con Laravel Eloquent object-relational mapper (ORM) rendono più facile per gli sviluppatori di Laravel lavorare con più database. Esegue operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD), nonché mappa i modelli di oggetti alle tabelle del database. Gestisce tutte le interazioni del database richieste per le operazioni CRUD.
Creazione di record
È possibile utilizzare il metodo ::create per inserire un nuovo record nel database.
student_record::create(array(
'first_name' => 'John',
'last_name' => 'Doe',
'student_rank' => 1
));
Oltre al semplice metodo di creazione mostrato sopra, puoi anche creare un nuovo oggetto e assegnargli attributi diversi. Quindi, puoi chiamare la funzione save() ed eseguire il codice. Metodi come firstOrCreate
() o firstOrNew
() sono altre opzioni per la creazione di record. Questi consentiranno di trovare uno studente con determinati attributi; se quello studente non viene trovato, lo creerai nel database o creerai un’istanza di una nuova istanza.
Lettura record
Utilizzando Eloquent ORM, è possibile trovare record nel database. Le query sono costruite in modo semplice e offrono un flusso regolare. Per creare istruzioni ::where
, utilizzerai i metodi get
() e first
(). Il metodo first
() restituirà solo un record, mentre il metodo get
() restituirà un array di record su cui è possibile eseguire il loop. Inoltre, il metodo find
() può essere utilizzato con un array di chiavi primarie, che restituirà una raccolta di record corrispondenti. Ecco alcuni esempi:
$student = Students::all();
Questo codice ottiene tutti gli studenti. Mentre il codice seguente trova uno studente specifico per ID:
$studente = Studenti::find(1);
Inoltre, come mostrato di seguito, il codice descrive la ricerca di uno studente in base a un attributo specifico.
$JohnDoe = Students::where('name', '=', 'John Doe')->first();
Per il metodo get(), questo codice mostra come trovare uno studente con un livello superiore a 5.
$rankStudents = Student::where('student_rank', '>', 5)->get();
Aggiornamento record
L’aggiornamento dei record utilizzando Eloquent è altrettanto semplice. Per aggiornare un record, basta trovare il record che si desidera aggiornare, modificare gli attributi e salvare. Ad esempio, per modificare il livello di grado dello studente di John Doe a 5, prima trova lo studente e poi esegui il metodo di salvataggio.
$JohnDoe = Bear::where('name', '=', 'John Doe')->first();
$JohnDoe->danger_level = 5;
$JohnDoe->save();
Il metodo save può essere utilizzato anche per aggiornare i modelli già esistenti nel database.
Eliminare i record
Eloquent vanta il suo facile processo di aggiornamento dei record, ma ha la stessa storia con l’eliminazione. Ci sono due opzioni: record pull-out ed esegui il metodo delete, o semplicemente usa il metodo destroy. Per trovare ed eliminare un record, esegui semplicemente i seguenti comandi:
$student = Students::find(1);
$student->delete();
Per eliminare un record e più record, vengono eseguiti i comandi:
Students::destroy(1);
Students::destroy(1, 2, 3);
Si noti che i parametri di destroy sono solo chiavi primarie a differenza del metodo delete che può accettare qualsiasi colonna del database.
Per trovare ed eliminare tutti gli studenti con livello superiore a 10.
Students::where('student_rank', '>', 10)->delete();
Ercole Palmeri