laravel database migrations
Denne opplæringen forklarer Laravel Databasehåndtering, Migrations, Seeding, Raw SQL Queries, Eloquent Models, Eloquent Relationships, Artisan and Tinker:
I forrige opplæring av Laravel Tutorial Series , lærte vi om arkitekturen, installasjonen og komponentene i Laravel Framework. Vi har sett Laravel PHP-prosjektstrukturen i detalj.
I denne veiledningen vil vi dekke Laravel Database, Migrations, Seeding, Running Raw SQL Queries, Eloquent Models, Eloquent Relationships, Artisan og Tinker. Vi har brukt Laravel versjon 7 i alle eksemplene.
Hva du vil lære:
Laravel Database Interaction
Laravel Framework samhandler med databaser ved hjelp av rå SQL, den flytende spørrebyggeren, og Veltalende ORM . Den støtter følgende fire databaser.
- MySQL versjon 5.6+
- PostgreSQL (Postgres) versjon 9.4+
- SQLite versjon 3.8.8+
- SQL Server-versjon 2017+
Fremgangsmåte for å koble prosjektet til MySQL-databasen:
Trinn 1: Lage en ny database heter db_ akademi (du kan bruke hvilket som helst passende navn) via phpMyadmin eller HeidiSQL .
Steg 2: Lag et nytt prosjekt med navnet akademi (du kan bruke hvilket som helst passende navn).
Merk:Se vår forrige veiledning, Laravel Tutorial for Beginners 1, hvis du ikke vet hvordan du installerer Laravel og oppretter et nytt prosjekt.
Trinn 3: Åpne prosjektet i en IDE og åpne .env fil. Endre verdien av DB_DATABASE (databasenavn) til db_ akademi (du kan bruke hvilket som helst passende navn). Begge databasenavn og verdien av DB_DATABASE i .env filen må være den samme.
Merk : Det kan hende du må endre andre databaseparametere i .env-filen, for eksempel DB_USERNAME, DB_PASSWOD, etc, avhengig av databasekonfigurasjonen.
Følgende skjermbilde viser databasekonfigurasjonen i .env-filen.
Laravel Migrations
Laravel Migration er en spesiell funksjon som brukes til å lage en databasetabell. Som standard er xxxx_xx_xx_xxxxxx _create_users_table.php filen og xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php filen er inkludert.
Struktur av en Laravel Migration
Laravel Migration-klasse bruker følgende to metoder:
- Opp () -metoden: Denne metoden brukes til å lage en ny tabell, kolonne eller indeks i databasen.
- Ned () -metoden: Denne metoden brukes til å slippe en eksisterende tabell, kolonne eller indeks i databasen. Denne metoden er den motsatte metoden for opp () -metoden.
Opprette en migrasjon av Laravel
Kjør følgende kommando i ledeteksten for å opprette en migrasjon som heter create_tutors_table .
php artisan make:migrationcreate_tutors_table
Utførelsen av kommandoen ovenfor vil opprette en fil med navnet xxxx_xx_xx_xxxxxx_create_tutors_table.php i database / migrasjoner katalog.
Åpne xxxx_xx_xx_xxxxxx_create_tutors_table.php fil og endre den eksisterende koden som vist nedenfor.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Kjører Laravel Migrations
Kjør følgende kommando i ledeteksten for å kjøre alle tilgjengelige migrasjoner.
php artisan migrate
Ovennevnte kommando oppretter de aktuelle tabellene i databasen som vist nedenfor.
Rolling Back Migrations
# 1) Rull tilbake den siste mengden migrasjoner
Kjør følgende kommando i ledeteksten for å rulle tilbake siste mengde migrasjoner (det kan omfatte enkelt- eller flere migrasjoner).
php artisan migrate:rollback
# 2) Rolling Back Migrations gir trinnet
Kjør følgende kommando i ledeteksten for å rulle tilbake siste to migrasjoner .
php artisan migrate:rollback --step=2
# 3) Rulling tilbake alle migrasjonene i applikasjonen
Kjør følgende kommando i ledeteksten til rull tilbake alle migrasjonene av søknaden.
php artisan migrate:reset
# 4) Rull tilbake og migrere ved hjelp av en enkelt kommando
Kjør følgende kommando i ledeteksten til rull tilbake og migrere ved hjelp av en enkelt kommando.
php artisan migrate:refresh
# 5) Rolling Back and Migrate begrenset nr. av migrasjoner
Kjør følgende kommando i ledeteksten til rull tilbake og migrere de to siste migrasjonene ved hjelp av en enkelt kommando.
php artisan migrate:refresh --step=2
# 6) Slipp alle tabeller og migrere
Kjør følgende kommando i ledeteksten til slipp alle tabeller og migrere .
php artisan migrate:fresh
Laravel Seeding
Når du utvikler en applikasjon, trenger du data for å teste applikasjonen. Såing brukes til å sette inn testdata i databasen.
Opprette en såmaskin
Trinn 1: Kjør følgende kommando i ledeteksten for å opprette en kalt såmaskin UserSeeder .
php artisan make:seederUserSeeder
Denne kommandoen oppretter en fil med navnet UserSeeder.php i database / frø katalog.
Steg 2: Åpne UserSeeder.php fil og endre den eksisterende koden som vist nedenfor.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Trinn 3: Åpne DatabaseSeeder.php-fil i database / frø katalogen og endre den eksisterende koden som vist nedenfor.
call(UserSeeder::class); } }
Merk : The DatabaseSeeder klasse brukes til å kalle andre frøklasser.
Running Seeders
Trinn 1: Kjør følgende kommando i ledeteksten til regenerere komponistens autolaster .
composer dump-autoload
Steg 2: Kjør følgende kommando i ledeteksten for å kjøre DatabaseSeeder klasse.
php artisan db:seed
I stedet for å kjøre kommandoen ovenfor, kan du kjøre følgende kommando i ledeteksten for å kjøre UserSeeder klasse.
php artisan db:seed --class= UserSeeder
Merk : Kjør følgende kommando i ledeteksten til slipp alle tabeller og kjør alle migrasjoner på nytt .
php artisan migrate:fresh --seed
Trinn 3: Bekreft de innsatte dataene med databasen.
Databasen vil vise utdata som ligner nedenfor:
Kjører rå SQL-spørringer
Kjøre en innsettingsspørring
Trinn 1: Legg til følgende kodesegment i ruter / web.php filen for å sette inn en ny post til veiledere bord.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Steg 2: Besøk URL: http: //academy.test/insert
Trinn 3: Bekreft de innsatte dataene med databasen.
Databasen vil vise utdata som ligner på følgende skjermbilde.
Kjøre en valgt spørring
Trinn 1: Legg til følgende kodesegment i ruter / web.php fil for å hente data fra veiledere bord som har en id tilsvarer to .
Route::get('/select',function(){ $tutors=DB::select('select * from tutors where id=?',(1)); foreach($tutors as $tutor) { echo $tutor->name.' is teaching '.$tutor->;subject; } });
Steg 2: Besøk URL: http: /academy.test/select
Trinn 3: Nettleseren vil vise utdata som ligner på følgende skjermbilde.
Kjører en oppdateringsspørring
Trinn 1: Legg til følgende kodesegment i ruter / web.php filen for å oppdatere posten i veiledere bord som har en id tilsvarer 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Steg 2: Gå til følgende URL: http: //academy.test/update
Trinn 3: Bekreft oppdaterte data med databasen.
Databasen vil vise utdata som ligner på bildet nedenfor:
Kjører en Delete Query
Trinn 1: Legg til følgende kodesegment i ruter / web.php fil for å slette posten i veiledere bord som har en id tilsvarer 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Steg 2: Besøk URL: http: //academy.test/delete
Trinn 3: Bekreft de slettede dataene med databasen.
Databasen vil vise utdata som ligner på bildet nedenfor:
Laravel Eloquent Modeller
I MVC-arkitektur, karakteren M står for Modell . En modell håndterer dataene som brukes av applikasjonen. Alle modeller er lagret i app katalog. De Bruker modell ( User.php) er standardmodellen. Hver tabell i databasen kan ha en tilsvarende Eloquent-modell. For eksempel veileder modellen lagrer data i veiledere bord.
Merk: Flertallsnavnet på klassen vil bli brukt som tabellnavnet med mindre annet er spesifisert.
Lage en veltalende modell
Kjør følgende kommando i ledeteksten for å lage en modell som heter Veileder .
php artisan make:model Tutor
Denne kommandoen oppretter en fil med navnet Tutor.php i app katalog.
I stedet for kommandoen ovenfor kan du kjøre følgende kommando i ledeteksten for å opprette en database migrering når du lager modellen.
php artisan make:modelTutor --migration
Eller
php artisan make:modelTutor -m
Begge ovennevnte kommandoer gir samme utdata.
Sett inn data
Trinn 1: Legg til følgende kodesegment i ruter / web.php filen for å sette inn en ny post til veiledere bord.
hva er en trådløs nettverksnøkkel
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Merk : Sett egenskapen “ bruk App Tutor ”I ruter / web.php filen som vist nedenfor.
Steg 2: Gå til følgende URL: http: //academy.test/insert-data
Trinn 3: Bekreft de innsatte dataene med databasen.
Databasen vil vise utdata som ligner på bildet nedenfor:

Finn data
Trinn 1: Legg til følgende kodesegment i ruter / web.php fil for å finne / hente posten i veiledere bord som har en id tilsvarer to .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Steg 2: Gå til følgende URL: http: //academy.test/find-data
Trinn 3: Nettleseren vil vise utdata som ligner på bildet nedenfor:

Oppdater data
Trinn 1: Legg til følgende kodesegment i ruter / web.php filen for å oppdatere posten i veiledere bord som har en id tilsvarer to .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
eller
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Steg 2: Gå til følgende URL: http: //academy.test/update-data
Trinn 3: Bekreft oppdaterte data med databasen.
Databasen vil vise utdata som ligner på bildet nedenfor:

Slett data
Trinn 1: Legg til følgende kodesegment i ruter / web.php fil for å slette posten i veiledere bord som har en id tilsvarer to .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Steg 2: Gå til følgende URL: http: //academy.test/delete-data
Trinn 3: Bekreft de slettede dataene med databasen.
Databasen vil vise utdata som ligner på bildet nedenfor:

programvare for talegjenkjenning er mest populær for
Myk slett data
I stedet for å slette data fra databasen, setter soft delete et attributt som heter slettet_på på modellen og sett den inn i databasetabellen.
Bruk følgende egenskaper for å aktivere myk sletting.
Illuminate Database Eloquent SoftDeletes
Følgende kodesegment kan brukes til å slette data mykt.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Få myke slettingsdata
De withTrashed () metoden kan brukes til få myke slettedata som vist under.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Gjenopprett Soft Delete Data
De restaurere() metoden kan brukes til gjenopprette soft delete data som vist under.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Slett data permanent
De forceDelete () metoden kan brukes til slette data permanent som vist under.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Laravel veltalende forhold
Et veltalende forhold hjelper til med å koble databasetabeller enkelt.
Veltalende forholdstyper
Følgende liste viser de forskjellige typer veltalende forhold:
- En-til-en-forhold
- En-til-mange forhold
- Mange-til-mange forhold
- Har-en-gjennom forhold
- Har-mange-gjennom forhold
- En-til-en (polymorf) forhold
- En-til-mange (polymorfe) forhold
- Mange-til-mange (polymorfe) forhold
# 1) En-til-en-forhold
Beskrivelse: Det er en-til-en-forholdet mellom kolonnene i forskjellige tabeller.
Eksempel på en-til-en forhold:
hasOne('AppBook); } }
Eksempel på en-til-en-forhold (invers):
belongsTo('App Author); } }
# 2) En-til-mange-forhold
Beskrivelse: I denne typen forhold eier en modell et hvilket som helst antall andre modeller.
En-til-mange forholdseksempel:
hasMany('AppReview'); } }
En-til-mange forhold (omvendt) eksempel:
belongsTo('AppTutorial'); } }
# 3) Mange-til-mange-forhold
Beskrivelse: Det er et mer komplisert forhold enn en-til-en og en-til-mange relasjoner, og du må lage en pivottabell for å definere et slikt forhold.
Eksempel på mange-til-mange forhold:
belongsToMany('AppBook); } }
Mange-til-mange (omvendt) forhold Eksempel:
belongsToMany('AppAuthor); } }
# 4) Har et-gjennom-forhold
Beskrivelse: Den kobler modeller gjennom et enkelt mellomforhold.
Har et eksempel på forhold:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Har mange forhold
Beskrivelse: Det gir tilgang til fjerne eller mellomliggende forhold på en enkel metode.
Har mange eksempler på forholdsforhold:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) En-til-en (polymorf) forhold
Beskrivelse: Det ligner på en en-til-en-relasjon, men målmodellen kan tilhøre mer enn en modelltype på en enkelt forening.
En-til-en (polymorf) forholdseksempel:
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) En-til-mange (polymorfe) forhold
Beskrivelse: Det ligner på en-til-mange-relasjon, men målmodellen kan tilhøre mer enn én modelltype på en enkelt forening.
En-til-mange (polymorfe) forholdseksempel:
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) Forhold mellom mange og mange (polymorfe)
Beskrivelse: I denne typen forhold har målmodellen unike poster som kan deles mellom de andre modellene.
Mange-til-mange (polymorfe) forholdseksempel:
morphToMany('AppComment, commentable); } }
Laravel Craftsman
I forrige opplæring har vi lært det Håndverker er en kommandolinjegrensesnitt ( CLI ).
Håndverkerkommandoer
Kjør følgende kommando i ledeteksten for å se alle tilgjengelige Håndverker kommandoer .
php artisan
Følgende skjermbilde viser utdataene fra kommandoen ovenfor.

Følgende tabell viser noen av de viktige håndverkskommandoene med deres respektive funksjoner, som er hentet fra utgangen fra kommandoen ovenfor (php artisan).
Kommando funksjonalitet cache: tøm Skyll applikasjonsbufferen hjelp Viser hjelp for en kommando liste Lister kommandoer migrere Kjør databasemigreringene test Kjør applikasjonstestene tinker Samhandle med søknaden din auth: clear-reset Tøm utløpne passord som er tilbakestilt db: frø Seed databasen med poster hendelse: liste Liste over programmets hendelser og lyttere nøkkel: generer Sett applikasjonsnøkkelen lage: kanal Opprett en ny kanalklasse lage: komponent Opprett en ny visningskomponentklasse lage: kontroller Opprett en ny kontrollerklasse lage: begivenhet Opprett en ny begivenhetsklasse lage: fabrikk Opprett en ny modellfabrikk lage: lytter Opprett en ny lytterklasse for hendelser lage: post Opprett en ny e-postklasse lage: mellomvare Opprett en ny mellomvareklasse lage: migrasjon Opprett en ny migreringsfil lag modell Lag en ny veltalende modellklasse lage: varsling Opprett en ny varslingsklasse lage: observatør Lag en ny observatørklasse lage: policy Opprett en ny policy klasse lage: leverandør Opprett en ny tjenesteleverandørklasse lage: ressurs Lag en ny ressurs lage: såmaskin Lag en ny såklasse lage: test Lag en ny testklasse migrere: fersk Slipp alle tabeller og kjør alle migrasjoner på nytt migrere: oppdater Tilbakestill og kjør alle migrasjoner på nytt migrere: tilbakestill Tilbakestill alle databasemigrasjoner migrere: tilbakeføring Tilbakestill den siste migrasjonen av databasen varsler: tabell Opprett en migrering for varslingstabellen rute: liste Liste opp alle registrerte ruter lagring: lenke Lag de symbolske koblingene som er konfigurert for applikasjonen
Laravel Tinker
Tinker er en REPL (READ-EVAL-PRINT-LOOP) som lar deg samhandle med applikasjonen på kommandolinjen. Tinker samhandler med en database uten å registrere ruter.
Tinker bruk med Artisan, og det inkluderer som standard.
Aktivering av Tinker-miljø
Kjør følgende kommando i ledeteksten for å aktivere Tinker-miljøet.
php artisan tinker
Følgende skjermbilde viser utdataene fra kommandoen ovenfor.

Sett inn data med Tinker
Kjør følgende kommandoer i ledeteksten for å sette inn en ny post i brukere bord.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Databasen vil vise utdata som ligner på følgende skjermbilde.

Finn data med Tinker
Kjør følgende kommando i ledeteksten for å finne / hente posten som har en id lik to i brukere bord.
$user = AppUser::find(2);
Kommandoprompten viser utdata som ligner på følgende skjermbilde.

Oppdater data med Tinker
Kjør følgende kommando i ledeteksten for å oppdatere posten som har en id lik to i brukere bord.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Databasen vil vise utdata som ligner på følgende skjermbilde.

Slett data med Tinker
Kjør følgende kommando i ledeteksten for å slette posten som har en id lik to i brukere bord.
$user = AppUser::find(2); $user->delete();
Databasen vil vise utdata som ligner på følgende skjermbilde.

Konklusjon
Laravel Framework samhandler med databasene ved hjelp av rå SQL, den flytende spørrebyggeren og den veltalende ORM. En modell håndterer dataene som brukes av applikasjonen. Et veltalende forhold hjelper til med å koble databasetabeller enkelt.
Migrasjon er en spesiell funksjon som brukes til å lage en databasetabell. Seeding brukes til å sette inn testdata i databasen som er veldig nyttig for utvikleren ettersom utvikleren trenger data for å teste applikasjonen når den utvikles. Tinker samhandler med en database uten å registrere ruter.
Vi håper du syntes denne veiledningen var nyttig! I neste opplæring vil vi diskutere skjemaer, filopplasting, autentisering, sending av e-post, økter, etc.
Glad læring!
<< PREV Tutorial | NESTE veiledning >>
Anbefalt lesing
- Laravel Collection And Laravel Forge Tutorial
- Laravel skjemaer og valideringsregler med eksempel
- Laravel-økt, filopplasting / nedlasting og tillatelser
- PHP Laravel-opplæring for nybegynnere: Hva er Laravel Framework
- MongoDB Create Database Backup
- Databasetesting med JMeter
- Oracle Database Tutorial - Hva er Oracle Database?
- Topp 10 databasedesignverktøy for å bygge komplekse datamodeller