laravel database migrations
Questo tutorial spiega la gestione del database Laravel, le migrazioni, il seeding, le query SQL non elaborate, i modelli eloquenti, le relazioni eloquenti, Artisan e Tinker:
Nel precedente tutorial di Serie di tutorial Laravel , abbiamo appreso dell'architettura, dell'installazione e dei componenti di Laravel Framework. Abbiamo visto in dettaglio la struttura del progetto PHP di Laravel.
In questo tutorial, tratteremo il database Laravel, le migrazioni, il seeding, l'esecuzione di query SQL non elaborate, i modelli eloquenti, le relazioni eloquenti, l'artigiano e Tinker. Abbiamo usato la versione 7 di Laravel in tutti gli esempi.
Cosa imparerai:
Interazione con il database Laravel
Il Laravel Framework interagisce con i database utilizzando raw SQL, il generatore di query fluente, e il Eloquente ORM . Supporta i seguenti quattro database.
- MySQL versione 5.6+
- PostgreSQL (Postgres) versione 9.4+
- SQLite versione 3.8.8+
- SQL Server versione 2017+
Passaggi per connettere il tuo progetto al database MySQL:
Passo 1: Creane uno nuovo Banca dati di nome db_ accademia (puoi usare qualsiasi nome adatto) tramite phpMyadmin o HeidiSQL .
Passo 2: Crea un nuovo progetto denominato accademia (puoi usare qualsiasi nome adatto).
Nota:Se non sai come installare Laravel e creare un nuovo progetto, fai riferimento al nostro precedente tutorial, Laravel Tutorial for Beginners 1.
Passaggio 3: Apri il progetto in un IDE e apri il file .env file. Modifica il valore di DB_DATABASE (nome database) a db_ academy (puoi usare qualsiasi nome adatto). Entrambi i file nome del database e il valore di DB_DATABASE nel .env il file deve essere lo stesso.
Nota : Potrebbe essere necessario modificare altri parametri del database nel file .env come DB_USERNAME, DB_PASSWOD, ecc. A seconda della configurazione del database.
La seguente schermata mostra la configurazione del database nel file .env.
Laravel Migrations
Laravel Migration è una funzionalità speciale utilizzata per creare una tabella di database. Per impostazione predefinita, il xxxx_xx_xx_xxxxxx _create_users_table.php file e il file xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php file sono inclusi.
Struttura di una migrazione Laravel
La classe Laravel Migration utilizza i seguenti due metodi:
- Il metodo up (): Questo metodo viene utilizzato per creare una nuova tabella, colonna o indice nel database.
- Il metodo down (): Questo metodo viene utilizzato per eliminare una tabella, una colonna o un indice esistente nel database. Questo metodo è il metodo opposto del metodo up ().
Creazione di una migrazione Laravel
Eseguire il seguente comando nel prompt dei comandi per creare una migrazione chiamata create_tutors_table .
php artisan make:migrationcreate_tutors_table
L'esecuzione del comando precedente creerà un file denominato xxxx_xx_xx_xxxxxx_create_tutors_table.php nel database / migrazioni directory.
Apri il xxxx_xx_xx_xxxxxx_create_tutors_table.php file e modificare il codice esistente come mostrato di seguito.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Esecuzione di migrazioni Laravel
Eseguire il seguente comando nel prompt dei comandi per eseguire tutte le migrazioni disponibili.
php artisan migrate
Il comando precedente creerà le tabelle rilevanti nel database come mostrato di seguito.
Rollback delle migrazioni
# 1) Rollback dell'ultimo batch di migrazioni
Eseguire il comando seguente nel prompt dei comandi per ripristinare il file ultimo lotto di migrazioni (può includere migrazioni singole o multiple).
php artisan migrate:rollback
# 2) Rollback delle migrazioni che forniscono il passaggio
Eseguire il comando seguente nel prompt dei comandi per ripristinare il file ultime due migrazioni .
php artisan migrate:rollback --step=2
# 3) Ripristino di tutte le migrazioni dell'applicazione
Eseguire il seguente comando nel prompt dei comandi per ripristinare tutte le migrazioni dell'applicazione.
php artisan migrate:reset
# 4) Rollback e migrazione utilizzando un singolo comando
Eseguire il seguente comando nel prompt dei comandi per eseguire il rollback e migrare utilizzando un singolo comando.
php artisan migrate:refresh
# 5) Rolling Back e Migrate limited no. delle migrazioni
Eseguire il seguente comando nel prompt dei comandi per ripristinare ed eseguire la migrazione delle ultime due migrazioni utilizzando un singolo comando.
php artisan migrate:refresh --step=2
# 6) Elimina tutte le tabelle e migra
Eseguire il seguente comando nel prompt dei comandi per rilascia tutte le tabelle e migra .
php artisan migrate:fresh
Semina di Laravel
Quando si sviluppa un'applicazione, sono necessari dati per testare l'applicazione. Il seeding viene utilizzato per inserire i dati di test nel database.
Creazione di una seminatrice
Passo 1: Eseguire il seguente comando nel prompt dei comandi per creare una seminatrice chiamata UserSeeder .
php artisan make:seederUserSeeder
Questo comando creerà un file denominato UserSeeder.php nel database / seed directory.
Passo 2: Apri il UserSeeder.php file e modificare il codice esistente come mostrato di seguito.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Passaggio 3: Apri il File DatabaseSeeder.php nel database / seed directory e modificare il codice esistente come mostrato di seguito.
call(UserSeeder::class); } }
Nota : Il DatabaseSeeder class viene utilizzato per chiamare altre classi seed.
Seminatrici in esecuzione
Passo 1: Eseguire il seguente comando nel prompt dei comandi per rigenerare il caricatore automatico di Composer .
composer dump-autoload
Passo 2: Esegui il seguente comando nel prompt dei comandi per eseguire il file DatabaseSeeder classe.
php artisan db:seed
Invece di eseguire il comando precedente, puoi eseguire il seguente comando nel prompt dei comandi per eseguire il file UserSeeder classe.
php artisan db:seed --class= UserSeeder
Nota : Eseguire il seguente comando nel prompt dei comandi per rilascia tutte le tabelle e riesegui tutte le migrazioni .
php artisan migrate:fresh --seed
Passaggio 3: Verificare i dati inseriti con il database.
Il database mostrerà un output simile al seguente:
Esecuzione di query SQL non elaborate
Esecuzione di una query di inserimento
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per inserire un nuovo record nel file tutor tavolo.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Passo 2: Visita l'URL: http: //academy.test/insert
Passaggio 3: Verificare i dati inseriti con il database.
Il database visualizzerà un output simile allo screenshot seguente.
Esecuzione di una query di selezione
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per recuperare i dati dal file tutor tabella che sta avendo un id è uguale a Due .
Route::get('/select',function(){ $tutors=DB::select('select * from tutors where id=?',(1)); foreach($tutors as $tutor) { echo $tutor->name.' is teaching '.$tutor->;subject; } });
Passo 2: Visita l'URL: http: /academy.test/select
Passaggio 3: Il browser visualizzerà un output simile allo screenshot seguente.
Esecuzione di una query di aggiornamento
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per aggiornare il record in tutor tabella che sta avendo un id è uguale a 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Passo 2: Visita il seguente URL: http: //academy.test/update
Passaggio 3: Verificare i dati aggiornati con il database.
Il database visualizzerà un output simile all'immagine seguente:
Esecuzione di una query di eliminazione
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per eliminare il record nel file tutor tabella che sta avendo un id è uguale a 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Passo 2: Visita l'URL: http: //academy.test/delete
Passaggio 3: Verifica i dati eliminati con il database.
Il database visualizzerà un output simile all'immagine seguente:
Laravel Eloquent Models
Nell'architettura MVC, il carattere M sta per Modello . Un modello gestisce i dati utilizzati dall'applicazione. Tutti i modelli vengono memorizzati nel file app directory. Il Utente modello ( User.php) è il modello predefinito. Ogni tabella del database può avere un modello eloquente corrispondente. Ad esempio, Tutor il modello memorizza i dati in formato tutor tavolo.
Nota: Il nome plurale della classe verrà utilizzato come nome della tabella se non diversamente specificato.
Creazione di un modello eloquente
Eseguire il seguente comando nel prompt dei comandi per creare un modello denominato Tutor .
php artisan make:model Tutor
Questo comando creerà un file denominato Tutor.php nel app directory.
Invece del comando precedente, puoi eseguire il seguente comando nel prompt dei comandi per creare un file migrazione del database durante la creazione del modello.
php artisan make:modelTutor --migration
O
php artisan make:modelTutor -m
Entrambi i comandi precedenti forniranno lo stesso output.
Inserisci dati
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per inserire un nuovo record nel file tutor tavolo.
html5 css3 domande e risposte dell'intervista
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Nota : Metti il tratto ' usa App Tutor ' nel route / web.php file come mostrato di seguito.
Passo 2: Visita il seguente URL: http: //academy.test/insert-data
Passaggio 3: Verificare i dati inseriti con il database.
Il database visualizzerà un output simile all'immagine seguente:

Trova dati
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per trovare / recuperare il record nel file tutor tabella che sta avendo un id è uguale a Due .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Passo 2: Visita il seguente URL: http: //academy.test/find-data
Passaggio 3: Il browser visualizzerà un output simile all'immagine seguente:

Aggiorna dati
come diventare un leader book
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per aggiornare il record in tutor tabella che sta avendo un id è uguale a Due .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
o
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Passo 2: Visita il seguente URL: http: //academy.test/update-data
Passaggio 3: Verificare i dati aggiornati con il database.
Il database visualizzerà un output simile all'immagine seguente:

Elimina dati
Passo 1: Aggiungi il seguente segmento di codice nel file route / web.php file per eliminare il record nel file tutor tabella che sta avendo un id è uguale a Due .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Passo 2: Visita il seguente URL: http: //academy.test/delete-data
Passaggio 3: Verifica i dati eliminati con il database.
Il database visualizzerà un output simile all'immagine seguente:

Dati di eliminazione graduale
Invece di eliminare i dati dal database, l'eliminazione temporanea imposta un attributo chiamato cancellato_at sul modello e inserirlo nella tabella del database.
Usa la seguente caratteristica per abilitare l'eliminazione temporanea.
Illumina Database Eloquent SoftDeletes
Il seguente segmento di codice può essere utilizzato per eliminare temporaneamente i dati.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Ottieni dati di eliminazione graduale
Il withTrashed () metodo può essere utilizzato per ottenere dati di eliminazione soft come mostrato di seguito.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Ripristina dati eliminazione software
Il ristabilire() metodo può essere utilizzato per ripristinare i dati di eliminazione soft come mostrato di seguito.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Elimina i dati in modo permanente
Il forceDelete () metodo può essere utilizzato per eliminare i dati in modo permanente come mostrato di seguito.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Laravel Eloquent Relationships
Una relazione eloquente aiuta a collegare facilmente le tabelle del database.
Tipi di relazioni eloquenti
Il seguente elenco mostra i diversi tipi di relazioni eloquenti:
- Rapporto uno a uno
- Relazione uno-a-molti
- Relazione molti a molti
- Ha una relazione one-through
- Ha una relazione a molti
- Rapporto uno a uno (polimorfico)
- Relazione uno-a-molti (polimorfica)
- Relazione molti-a-molti (polimorfica)
# 1) Rapporto uno a uno
Descrizione: È la relazione uno-a-uno tra le colonne di tabelle diverse.
Esempio di relazione uno a uno:
hasOne('AppBook); } }
Esempio di relazione uno a uno (inverso):
belongsTo('App Author); } }
# 2) Rapporto uno-a-molti
Descrizione: In questo tipo di relazione, un modello possiede un numero qualsiasi di altri modelli.
Esempio di relazione uno-a-molti:
hasMany('AppReview'); } }
Esempio di relazione uno-a-molti (inverso):
belongsTo('AppTutorial'); } }
# 3) Relazione molti-a-molti
Descrizione: È una relazione più complicata delle relazioni uno-a-uno e uno-a-molti ed è necessario creare una tabella pivot per definire tale relazione.
Esempio di relazione molti-a-molti:
belongsToMany('AppBook); } }
Relazione molti-a-molti (inversa) Esempio:
belongsToMany('AppAuthor); } }
# 4) Ha una relazione one-through
Descrizione: Collega i modelli attraverso un'unica relazione intermedia.
Esempio di relazione one-through:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Relazione ha-molti-attraverso
Descrizione: Consente l'accesso a relazioni lontane o intermedie in un metodo semplice.
Esempio di relazione ha molti passanti:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Rapporto uno-a-uno (polimorfico)
Descrizione: È simile a una relazione uno-a-uno, ma il modello di destinazione può appartenere a più di un tipo di modello su una singola associazione.
Esempio di relazione uno-a-uno (polimorfico):
morphTo(); } } class Article extends Model { /** * Get the article's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); } } class Author extends Model { /** * Get the author's image. */ public function image() { return $this->morphOne('AppImage', 'imageable'); }
# 7) Relazione uno-a-molti (polimorfica)
Descrizione: È simile a una relazione uno-a-molti ma il modello di destinazione può appartenere a più di un tipo di modello su una singola associazione.
Esempio di relazione uno-a-molti (polimorfica):
morphTo(); } } class Article extends Model { /** * Get all of the article's comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } } class Audio extends Model { /** * Get all of the audio’s comments. */ public function comments() { return $this->morphMany('AppComment', 'commentable'); } }
# 8) Relazione molti-a-molti (polimorfica)
Descrizione: In questo tipo di relazione, il modello di destinazione ha record univoci che possono essere condivisi tra gli altri modelli.
Esempio di relazione molti-a-molti (polimorfici):
morphToMany('AppComment, commentable); } }
Laravel Craftsman
Nel tutorial precedente, lo abbiamo imparato Artigiano è un interfaccia della riga di comando ( CLI ).
Comandi artigiani
Eseguire il seguente comando nel prompt dei comandi per visualizzare tutti i file disponibili Comandi artigiani .
php artisan
Lo screenshot seguente mostra l'output del comando precedente.

La tabella seguente mostra alcuni importanti comandi artisan con le rispettive funzionalità, che sono presi dall'output del comando precedente (php artisan).
Comando funzionalità cache: cancella Svuota la cache dell'applicazione Aiuto Visualizza la guida per un comando elenco Elenca i comandi migrare Esegui le migrazioni del database test Esegui i test dell'applicazione armeggiare Interagisci con la tua applicazione auth: cancella-ripristina Svuota i token di reimpostazione della password scaduta db: seme Semina il database con i record evento: elenco Elenca gli eventi e gli ascoltatori dell'applicazione chiave: genera Imposta la chiave dell'applicazione make: channel Crea una nuova classe di canale make: component Crea una nuova classe di componenti di visualizzazione make: controller Crea una nuova classe controller make: evento Crea una nuova classe evento marca: fabbrica Crea una nuova fabbrica di modelli make: listener Crea una nuova classe listener di eventi make: mail Crea una nuova classe di posta elettronica make: middleware Crea una nuova classe di middleware make: migrazione Crea un nuovo file di migrazione fare il modello Crea una nuova classe modello eloquente make: notifica Crea una nuova classe di notifica make: osservatore Crea una nuova classe di osservatori make: policy Crea una nuova classe di politiche make: provider Crea una nuova classe di provider di servizi make: resource Crea una nuova risorsa fare: seminatrice Crea una nuova classe di seminatrici make: test Crea una nuova classe di prova migrare: fresco Elimina tutte le tabelle e riesegui tutte le migrazioni migrate: refresh Reimposta e riesegui tutte le migrazioni migrate: reset Ripristina tutte le migrazioni del database migrate: rollback Ripristina l'ultima migrazione del database notifiche: tabella Crea una migrazione per la tabella delle notifiche percorso: elenco Elenca tutte le rotte registrate archiviazione: link Creare i collegamenti simbolici configurati per l'applicazione
Laravel Tinker
Tinker è un REPL (READ-EVAL-PRINT-LOOP) che ti consente di interagire con l'applicazione sulla riga di comando. Tinker interagisce con un database senza registrare percorsi.
Tinker usa con Artisan e include per impostazione predefinita.
Abilitazione dell'ambiente Tinker
Esegui il seguente comando nel prompt dei comandi per abilitare l'ambiente Tinker.
php artisan tinker
Lo screenshot seguente mostra l'output del comando precedente.

Inserisci dati con Tinker
Eseguire i seguenti comandi nel prompt dei comandi per inserire un nuovo record in utenti tavolo.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Il database visualizzerà un output simile allo screenshot seguente.

Trova dati con Tinker
Esegui il seguente comando nel prompt dei comandi per trovare / recuperare il record con estensione id uguale a Due nel utenti tavolo.
$user = AppUser::find(2);
Il prompt dei comandi visualizzerà un output simile allo screenshot seguente.

Aggiorna i dati con Tinker
Esegui il seguente comando nel prompt dei comandi per aggiornare il record con estensione id uguale a Due nel utenti tavolo.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Il database visualizzerà un output simile allo screenshot seguente.

Elimina i dati con Tinker
Esegui il seguente comando nel prompt dei comandi per eliminare il record con estensione id uguale a Due nel utenti tavolo.
$user = AppUser::find(2); $user->delete();
Il database visualizzerà un output simile allo screenshot seguente.

Conclusione
Il Laravel Framework interagisce con i database utilizzando SQL raw, il generatore di query fluente e l'ORM Eloquent. Un modello gestisce i dati utilizzati dall'applicazione. Una relazione eloquente aiuta a collegare facilmente le tabelle del database.
La migrazione è una funzionalità speciale utilizzata per creare una tabella di database. Il seeding viene utilizzato per inserire dati di test nel database che sono molto utili per lo sviluppatore poiché lo sviluppatore necessita di dati per testare l'applicazione durante lo sviluppo. Tinker interagisce con un database senza registrare percorsi.
Ci auguriamo che questo tutorial ti sia stato utile! Nel prossimo tutorial, discuteremo di moduli, caricamento di file, autenticazione, invio di e-mail, sessioni, ecc.
Buon apprendimento!
<< PREV Tutorial | PROSSIMO Tutorial >>
Lettura consigliata
- Collezione Laravel e tutorial su Laravel Forge
- Moduli Laravel e regole di convalida con esempio
- Sessione Laravel, caricamento / download di file e autorizzazioni
- Tutorial PHP Laravel per principianti: cos'è Laravel Framework
- MongoDB Crea backup del database
- Test di database con JMeter
- Tutorial sul database Oracle - Che cos'è il database Oracle?
- I 10 migliori strumenti di progettazione di database per creare modelli di dati complessi