laravel database migrations
Ta vadnica razlaga ravnanje z zbirko podatkov Laravel, selitve, sejanje, neobdelane poizvedbe SQL, zgovorni modeli, zgovorni odnosi, obrtnik in tinker:
V prejšnji vadnici Laravel Tutorial Series smo spoznali arhitekturo, namestitev in sestavne dele okvira Laravel. Podrobno smo videli strukturo projekta Laravel PHP.
V tej vadnici bomo obravnavali bazo podatkov Laravel, selitve, sejanje, izvajanje surovih poizvedb SQL, zgovorni modeli, zgovorni odnosi, obrtnik in tinker. V vseh primerih smo uporabili različico Laravel 7.
Kaj se boste naučili:
Interakcija baze podatkov Laravel
Laravel Framework komunicira z zbirkami podatkov z uporabo surovi SQL, tekoči graditelj poizvedb, in Zgovoren ORM . Podpira naslednje štiri zbirke podatkov.
- Različica MySQL 5.6+
- PostgreSQL (Postgres), različica 9.4+
- Različica SQLite 3.8.8+
- Različica SQL Server 2017+
Koraki za povezavo vašega projekta z bazo podatkov MySQL:
Korak 1: Ustvari novo zbirka podatkov imenovan db_ akademije (lahko uporabite katero koli primerno ime) prek phpMyadmin ali HeidiSQL .
2. korak: Ustvarite nov projekt z imenom akademije (lahko uporabite katero koli primerno ime).
Opomba:Če ne veste, kako namestiti Laravel in ustvariti nov projekt, si oglejte našo prejšnjo vadnico Laravel Tutorial for Beginners 1.
3. korak: Odprite projekt v IDE in odprite .env mapa. Spremenite vrednost DB_DATABASE (ime baze podatkov) do db_ akademija (lahko uporabite katero koli primerno ime). Oba ime baze podatkov in vrednost DB_DATABASE v .env datoteka mora biti enaka.
Opomba : V datoteki .env boste morda morali spremeniti druge parametre baze podatkov, na primer DB_USERNAME, DB_PASSWOD itd., Odvisno od konfiguracije baze podatkov.
Naslednja slika zaslona prikazuje konfiguracijo baze podatkov v datoteki .env.
Laravel Migracije
Laravel Migration je posebna funkcija, ki se uporablja za ustvarjanje tabele zbirke podatkov. Privzeto je xxxx_xx_xx_xxxxxx _create_users_table.php in datoteko xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php datoteka.
Struktura migracije Laravel
Razred Laravel Migration uporablja naslednja dva načina:
- Metoda up (): Ta metoda se uporablja za ustvarjanje nove tabele, stolpca ali indeksa v bazi podatkov.
- Metoda navzdol (): Ta metoda se uporablja za spuščanje obstoječe tabele, stolpca ali indeksa v bazo podatkov. Ta metoda je nasprotna metodi up ().
Ustvarjanje migracije Laravel
V ukaznem pozivu zaženite naslednji ukaz, da ustvarite klic z migracijo create_tutors_table .
php artisan make:migrationcreate_tutors_table
Izvedba zgornjega ukaza bo ustvarila datoteko z imenom xxxx_xx_xx_xxxxxx_create_tutors_table.php v zbirka podatkov / selitve imenik.
Odprite xxxx_xx_xx_xxxxxx_create_tutors_table.php datoteko in spremenite obstoječo kodo, kot je prikazano spodaj.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Izvajanje migracij Laravel
Zaženite naslednji ukaz v ukaznem pozivu, da zaženete vse razpoložljive selitve.
php artisan migrate
Zgornji ukaz bo ustvaril ustrezne tabele v zbirki podatkov, kot je prikazano spodaj.
Povračanje migracij
# 1) Povrnitev zadnje serije selitev
V ukaznem pozivu zaženite naslednji ukaz, da vrnete zadnja serija migracij (lahko vključuje enojne ali večkratne selitve).
php artisan migrate:rollback
# 2) Kotalne selitve, ki zagotavljajo korak
V ukaznem pozivu zaženite naslednji ukaz, da vrnete zadnji dve selitvi .
php artisan migrate:rollback --step=2
# 3) Preusmeritev vseh selitev aplikacije
V ukaznem pozivu zaženite naslednji ukaz do povrni vse selitve vloge.
php artisan migrate:reset
# 4) Kotalkanje in selitev z enim samim ukazom
V ukaznem pozivu zaženite naslednji ukaz do se vrnite nazaj in migrirajte z enim samim ukazom.
php artisan migrate:refresh
# 5) Povrnitev in selitev omejena št. migracij
V ukaznem pozivu zaženite naslednji ukaz do se vrnite nazaj in selite zadnji dve selitvi z enim samim ukazom.
php artisan migrate:refresh --step=2
# 6) Spustite vse tabele in selite
V ukaznem pozivu zaženite naslednji ukaz do spusti vse tabele in se preseli .
php artisan migrate:fresh
Sejanje Laravel
Ko razvijete aplikacijo, potrebujete podatke za preizkus aplikacije. Sejanje se uporablja za vstavljanje testnih podatkov v bazo podatkov.
Ustvarjanje sejalnika
Korak 1: Zaženite naslednji ukaz v ukaznem pozivu, da ustvarite sejalnik z imenom UserSeeder .
php artisan make:seederUserSeeder
Ta ukaz bo ustvaril datoteko z imenom UserSeeder.php v zbirka podatkov / semena imenik.
2. korak: Odprite UserSeeder.php datoteko in spremenite obstoječo kodo, kot je prikazano spodaj.
insert([ 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), ]); } }
3. korak: Odprite Datoteka DatabaseSeeder.php v zbirka podatkov / semena imenik in spremenite obstoječo kodo, kot je prikazano spodaj.
call(UserSeeder::class); } }
Opomba : The DatabaseSeeder class se uporablja za klicanje drugih razredov semen.
Tek sadilci
Korak 1: V ukaznem pozivu zaženite naslednji ukaz do regenerira Composerjev samodejni nalagalnik .
composer dump-autoload
2. korak: Zaženite naslednji ukaz v ukaznem pozivu, da zaženete DatabaseSeeder razred.
php artisan db:seed
Namesto da zaženete zgornji ukaz, lahko zaženete naslednji ukaz v ukaznem pozivu UserSeeder razred.
php artisan db:seed --class= UserSeeder
Opomba : Zaženite naslednji ukaz v ukaznem pozivu do spustite vse tabele in znova zaženite vse selitve .
php artisan migrate:fresh --seed
3. korak: Vstavljene podatke preverite z bazo podatkov.
Baza podatkov bo prikazala rezultate, podobne spodnjim:
Izvajanje neobdelanih poizvedb SQL
Zagon poizvedbe za vstavljanje
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko, da v datoteko vstavite nov zapis mentorji tabela.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',['Mr John','Computer Science']); });
2. korak: Obiščite URL: http: //academy.test/insert
3. korak: Vstavljene podatke preverite z bazo podatkov.
Baza podatkov bo prikazala rezultate, podobne naslednjim posnetkom zaslona.
Izvajanje poizvedbe Select
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za pridobivanje podatkov iz mentorji tabela, ki ima id enako dva .
Route::get('/select',function(){ $tutors=DB::select('select * from tutors where id=?',[1]); foreach($tutors as $tutor) { echo $tutor->name.' is teaching '.$tutor->;subject; } });
2. korak: Obiščite URL: http: /academy.test/select
3. korak: Brskalnik bo prikazal rezultate, podobne naslednjim posnetkom zaslona.
Zagon poizvedbe za posodobitev
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za posodobitev zapisa v mentorji tabela, ki ima id enako 1. .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',[1]); return $tutors; });
2. korak: Obiščite naslednji URL: http: //academy.test/update
3. korak: Posodobljene podatke preverite z bazo podatkov.
Baza podatkov bo prikazala izhod, podoben spodnji sliki:
Izvajanje poizvedbe za brisanje
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za brisanje zapisa v mentorji tabela, ki ima id enako 1. .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',[1]); return $tutors; });
2. korak: Obiščite URL: http: //academy.test/delete
3. korak: Izbrisane podatke preverite z bazo podatkov.
Baza podatkov bo prikazala izhod, podoben spodnji sliki:
Zgovorni modeli Laravel
V arhitekturi MVC znak M pomeni Model . Model obdeluje podatke, ki jih uporablja aplikacija. Vsi modeli so shranjeni v app imenik. The Uporabnik model ( User.php) je privzeti model. Vsaka tabela baze podatkov ima lahko ustrezen zgovorni model. Na primer, Tutor model shranjuje podatke v mentorji tabela.
Opomba: Množinsko ime razreda bo uporabljeno kot ime tabele, če ni določeno drugače.
Ustvarjanje zgovornega modela
Zaženite naslednji ukaz v ukaznem pozivu, da ustvarite model z imenom Tutor .
php artisan make:model Tutor
Ta ukaz bo ustvaril datoteko z imenom Tutor.php v app imenik.
Namesto zgornjega ukaza lahko v ukaznem pozivu zaženete naslednji ukaz, da ustvarite datoteko selitev baze podatkov pri ustvarjanju modela.
php artisan make:modelTutor --migration
Ali
php artisan make:modelTutor -m
Oba zgornja ukaza bosta imela enak izhod.
Vstavi podatke
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko, da v datoteko vstavite nov zapis mentorji tabela.
php vprašanje in odgovor za izkušnje
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Opomba : Postavite lastnost uporabite App Tutor 'V routes / web.php datoteko, kot je prikazano spodaj.
2. korak: Obiščite naslednji URL: http: //academy.test/insert-data
3. korak: Vstavljene podatke preverite z bazo podatkov.
Baza podatkov bo prikazala izhod, podoben spodnji sliki:
Poiščite podatke
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za iskanje / iskanje zapisa v datoteki mentorji tabela, ki ima id enako dva .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
2. korak: Obiščite naslednji URL: http: //academy.test/find-data
3. korak: Brskalnik bo prikazal rezultate, podobne spodnji sliki:
Posodobi podatke
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za posodobitev zapisa v mentorji tabela, ki ima id enako dva .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
ali
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(['name'=>'Ms Georgina','subject'=>'Computer Science']); });
2. korak: Obiščite naslednji URL: http: //academy.test/update-data
3. korak: Posodobljene podatke preverite z bazo podatkov.
Baza podatkov bo prikazala izhod, podoben spodnji sliki:
Izbriši podatke
Korak 1: V kodo dodajte naslednji kodni segment routes / web.php datoteko za brisanje zapisa v mentorji tabela, ki ima id enako dva .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
2. korak: Obiščite naslednji URL: http: //academy.test/delete-data
3. korak: Izbrisane podatke preverite z bazo podatkov.
Baza podatkov bo prikazala izhod, podoben spodnji sliki:
Soft Delete Data
Namesto brisanja podatkov iz baze podatkov mehko brisanje nastavi atribut, ki se imenuje izbrisano_at na modelu in ga vstavite v tabelo baze podatkov.
Uporabite naslednjo lastnost, da omogočite mehko brisanje.
Osvetlite Database Eloquent SoftDeletes
Naslednji segment kode lahko uporabite za mehko brisanje podatkov.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Pridobite mehko brisanje podatkov
The withTrashed () metoda se lahko uporablja za dobite mehko brisanje podatkov kot je prikazano spodaj.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Obnovi mehko brisanje podatkov
The obnovi () metoda se lahko uporablja za obnovi mehko brisanje podatkov kot je prikazano spodaj.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Trajno izbriši podatke
The forceDelete () metoda se lahko uporablja za trajno izbriši podatke kot je prikazano spodaj.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Zgovorna razmerja Laravel
Zgovorno razmerje pomaga enostavno povezati tabele zbirke podatkov.
Zgovorne vrste odnosov
Naslednji seznam prikazuje različne vrste zgovornih odnosov:
- Razmerje ena na ena
- Odnos ena proti številnim
- Odnos veliko do mnogih
- Ima en-skozi odnos
- Ima razmerje veliko-skozi
- Razmerje ena na ena (polimorfna)
- Razmerje ena proti številnim (polimorfna)
- Razmerje med mnogimi in mnogimi (polimorfno)
# 1) Razmerje ena na ena
Opis: To je razmerje ena na ena med stolpci različnih tabel.
Primer odnosa ena proti ena:
hasOne('AppBook); } }
Primer razmerja ena na ena (inverzni):
belongsTo('App Author); } }
# 2) Razmerje ena proti številnim
Opis: V tej vrsti odnosov je en model lastnik poljubnega števila drugih modelov.
Primer odnosa z enim do več:
hasMany('AppReview'); } }
Primer razmerja ena proti številkam (inverzni):
belongsTo('AppTutorial'); } }
# 3) Razmerje med mnogimi
Opis: To je bolj zapleteno razmerje kot razmerje ena na ena in ena na več, zato morate ustvariti vrtilno tabelo, da definirate tak odnos.
Primer razmerja med mnogimi in mnogimi:
belongsToMany('AppBook); } }
Primer: mnogo-do-mnogih (inverzna)
belongsToMany('AppAuthor); } }
# 4) Odnos z enim samim odnosom
Opis: Modele povezuje v enem vmesnem razmerju.
Primer odnosa z enim samim:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Ima razmerje med mnogimi
Opis: Omogoča dostop do oddaljenih ali vmesnih odnosov na enostaven način.
Primer razmerja med številnimi:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Razmerje ena na ena (polimorfna)
Opis: Podobno je razmerju ena-na-ena, vendar lahko ciljni model pripada več kot enemu tipu modela na enem združenju.
Primer odnosa ena proti ena (polimorfna):
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) Odnos ena proti številnim (polimorfna)
Opis: Podobno je razmerju ena proti več, vendar lahko ciljni model pripada več kot enemu tipu modela na enem združenju.
Primer razmerja ena proti številnim (polimorfna):
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) Odnos med mnogimi in mnogimi (polimorfni)
Opis: Pri tej vrsti odnosov ima ciljni model edinstvene zapise, ki si jih lahko deli med drugimi modeli.
Primer razmerja med mnogimi in mnogimi (polimorfni):
morphToMany('AppComment, commentable); } }
Obrtnik Laravel
V prejšnji vadnici smo se tega naučili Obrtnik je vmesnik ukazne vrstice ( CLI ).
Obrtniška poveljstva
najboljše brezplačno odstranjevanje virusov in zlonamerne programske opreme
V ukaznem pozivu zaženite naslednji ukaz, da si ogledate vse razpoložljive Obrtniški ukazi .
php artisan
Naslednja slika zaslona prikazuje rezultat zgornjega ukaza.
Naslednja tabela prikazuje nekatere pomembne obrtniške ukaze s pripadajočimi funkcijami, ki so povzeti iz izhoda zgornjega ukaza (php artisan).
Ukaz funkcionalnost predpomnilnik: čist Izperite predpomnilnik aplikacije pomoč Prikaže pomoč za ukaz seznam Seznami ukazov migrirati Zaženite selitve baze podatkov preskus Zaženite preskuse aplikacij Tinker Interakcija s svojo aplikacijo auth: počisti-ponastavi Izperite potekle žetone za ponastavitev gesla db: seme Zasejte bazo podatkov z zapisi dogodek: seznam Naštejte dogodke in poslušalce aplikacije ključ: generiraj Nastavite aplikacijski ključ make: kanal Ustvarite nov razred kanalov make: komponenta Ustvarite nov razred komponent pogleda make: krmilnik Ustvarite nov razred krmilnika make: dogodek Ustvarite nov razred dogodkov znamka: tovarna Ustvarite novo tovarno modelov make: poslušalec Ustvarite nov razred poslušalcev dogodkov make: mail Ustvarite nov e-poštni razred make: vmesna programska oprema Ustvarite nov razred vmesne programske opreme make: migracija Ustvarite novo datoteko za selitev znamka: model Ustvarite nov razred zgovornih modelov make: obvestilo Ustvarite nov razred obvestil make: opazovalec Ustvarite nov razred opazovalcev make: policy Ustvarite nov razred pravilnika znamka: ponudnik Ustvarite nov razred ponudnika storitev make: vir Ustvarite nov vir znamka: sejalnica Ustvarite nov razred sadilnika make: test Ustvarite nov preizkusni razred seliti: sveže Spustite vse tabele in znova zaženite vse selitve migracija: osveži Ponastavite in znova zaženite vse selitve migracija: ponastavitev Povrni vse selitve baze podatkov migracija: povratno Povrni zadnjo selitev baze podatkov obvestila: tabela Ustvarite selitev za tabelo z obvestili pot: seznam Seznam vseh registriranih poti shranjevanje: povezava Ustvarite simbolne povezave, konfigurirane za aplikacijo
Laravel Tinker
Tinker je REPL (READ-EVAL-PRINT-LOOP), ki omogoča interakcijo z aplikacijo v ukazni vrstici. Tinker komunicira z bazo podatkov brez registracije poti.
Tinker uporabljajte z Artisanom in privzeto vključuje.
Omogočanje okolja Tinker
V ukaznem pozivu zaženite naslednji ukaz, da omogočite okolje Tinker.
php artisan tinker
Naslednja slika zaslona prikazuje rezultat zgornjega ukaza.
Vstavite podatke s Tinkerjem
V ukazni poziv zaženite naslednje ukaze, da v zapis vstavite nov zapis uporabnikov tabela.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Baza podatkov bo prikazala rezultate, podobne naslednjim posnetkom zaslona.
Poiščite podatke s Tinkerjem
V ukaznem pozivu zaženite naslednji ukaz, da poiščete / pridobite zapis, ki vsebuje id enako dva v uporabnikov tabela.
$user = AppUser::find(2);
Ukazni poziv bo prikazal rezultate, podobne naslednjim posnetkom zaslona.
Posodobite podatke s Tinkerjem
V ukaznem pozivu zaženite naslednji ukaz, da posodobite zapis, ki ima id enako dva v uporabnikov tabela.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Baza podatkov bo prikazala rezultate, podobne naslednjim posnetkom zaslona.
Izbriši podatke s Tinkerjem
V ukaznem pozivu zaženite naslednji ukaz, da izbrišete zapis, ki ima id enako dva v uporabnikov tabela.
$user = AppUser::find(2); $user->delete();
Baza podatkov bo prikazala rezultate, podobne naslednjim posnetkom zaslona.
Zaključek
Laravel Framework deluje z bazami podatkov s pomočjo surovega SQL, tekočega graditelja poizvedb in zgovornega ORM-a. Model obdeluje podatke, ki jih uporablja aplikacija. Zgovorno razmerje pomaga enostavno povezati tabele zbirke podatkov.
Selitev je posebna značilnost, ki se uporablja za ustvarjanje tabele zbirke podatkov. Sejanje se uporablja za vstavljanje testnih podatkov v bazo podatkov, kar je zelo koristno za razvijalca, saj razvijalec potrebuje podatke za preizkušanje aplikacije pri razvoju. Tinker komunicira z bazo podatkov brez registracije poti.
Upamo, da vam je bila ta vadnica v pomoč! V naslednji vadnici bomo razpravljali o obrazcih, nalaganju datotek, overjanju, pošiljanju e-pošte, sejah itd.
Srečno učenje!
<< PREV Tutorial | NASLEDNJA Vadnica >>
Priporočeno branje
- Zbirka Laravel in vadnica Laravel Forge
- Obrazci in pravila za preverjanje Laravel s primerom
- Laravel seja, nalaganje / prenos datotek in dovoljenja
- PHP Laravel Vadnica za začetnike: kaj je Laravel Framework
- MongoDB Ustvari varnostno kopijo baze podatkov
- Testiranje zbirke podatkov z JMeter
- Vadnica za Oracle Database - Kaj je Oracle Database?
- 10 najboljših orodij za oblikovanje zbirk podatkov za izdelavo kompleksnih podatkovnih modelov