laravel database migrations
V tomto výučbe sa dozviete, ako pracovať s laravel databázami, migráciami, naočkovaním, nespracovanými dotazmi SQL, veľavravnými modelmi, veľavravnými vzťahmi, remeselníkmi a tinkermi:
V predchádzajúcom návode z Laravel Výukový program , dozvedeli sme sa o architektúre, inštalácii a komponentoch Laravel Framework. Štruktúru projektu Laravel PHP sme videli podrobne.
V tomto výučbe sa budeme venovať Laravelovej databáze, migráciám, naočkovaniu, spusteniu surových dotazov SQL, veľavravným modelom, veľavravným vzťahom, remeselníkom a Tinkerom. Vo všetkých príkladoch sme použili Laravel verziu 7.
Čo sa dozviete:
Laravel Interakcia s databázou
Laravel Framework interaguje s databázami pomocou raw SQL, tvorca plynulých dotazov, a Veľavravný ORM . Podporuje nasledujúce štyri databázy.
- MySQL verzia 5.6+
- PostgreSQL (Postgres) verzia 9.4+
- SQLite verzia 3.8.8+
- Verzia SQL Server 2017+
Kroky na pripojenie vášho projektu k databáze MySQL:
Krok 1: Vytvorte nový databázy menovaný db_ akadémia (môžete použiť akékoľvek vhodné meno) prostredníctvom phpMyadmin alebo HeidiSQL .
Krok 2: Vytvorte nový projekt s názvom akadémia (môžete použiť akékoľvek vhodné meno).
Poznámka:Ak neviete, ako nainštalovať Laravel a vytvoriť nový projekt, prečítajte si náš predchádzajúci návod Laravel Tutorial for Beginners 1.
Krok č. 3: Otvorte projekt v IDE a otvorte .env spis. Zmeňte hodnotu DB_DATABASE (názov databázy) do db_ akadémia (môžete použiť akékoľvek vhodné meno). Obaja názov databázy a hodnota DB_DATABASE v .env súbor musí byť rovnaký.
Poznámka : V závislosti od konfigurácie databázy možno budete musieť zmeniť ďalšie parametre databázy v súbore .env, ako napríklad DB_USERNAME, DB_PASSWOD atď.
Nasledujúca snímka obrazovky zobrazuje konfiguráciu databázy v súbore .env.
Laravelské migrácie
Laravel Migration je špeciálna funkcia používaná na vytvorenie databázovej tabuľky. V predvolenom nastavení je xxxx_xx_xx_xxxxxx _create_users_table.php spis a xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php sú súčasťou súboru.
Štruktúra migrácie laravel
Trieda migrácie laravel používa nasledujúce dve metódy:
- Metóda up (): Táto metóda sa používa na vytvorenie novej tabuľky, stĺpca alebo indexu v databáze.
- Metóda down (): Táto metóda sa používa na zrušenie existujúcej tabuľky, stĺpca alebo indexu v databáze. Táto metóda je opačnou metódou ako metóda hore ().
Vytvorenie migrácie laravel
Spustením nasledujúceho príkazu v príkazovom riadku vytvorte migráciu s názvom tabuľka create_tutors_table .
php artisan make:migrationcreate_tutors_table
Vykonaním vyššie uvedeného príkazu sa vytvorí súbor s názvom xxxx_xx_xx_xxxxxx_create_tutors_table.php v databáza / migrácie adresár.
Otvor xxxx_xx_xx_xxxxxx_create_tutors_table.php súbor a upravte existujúci kód, ako je uvedené nižšie.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Prebieha migrácia laravel
Spustením nasledujúceho príkazu v príkazovom riadku spustíte všetky dostupné migrácie.
php artisan migrate
Vyššie uvedený príkaz vytvorí príslušné tabuľky v databáze, ako je uvedené nižšie.
Vrátenie migrácií späť
# 1) Vrátenie poslednej dávky migrácií
Spustením nasledujúceho príkazu v príkazovom riadku vrátite späť posledná dávka migrácií (môže obsahovať jednu alebo viac migrácií).
php artisan migrate:rollback
# 2) Vrátenie migrácií poskytujúcich krok
Spustením nasledujúceho príkazu v príkazovom riadku vrátite späť posledné dve migrácie .
php artisan migrate:rollback --step=2
# 3) Vrátenie všetkých migrácií aplikácie
Spustite nasledujúci príkaz v príkazovom riadku na vrátiť všetky migrácie žiadosti.
php artisan migrate:reset
# 4) Vrátenie späť a migrácia pomocou jediného príkazu
Spustite nasledujúci príkaz v príkazovom riadku na vrátiť späť a migrovať pomocou jediného príkazu.
php artisan migrate:refresh
# 5) Vrátenie sa a migrácia obmedzená č. migrácií
Spustite nasledujúci príkaz v príkazovom riadku na vrátiť späť a migrovať posledné dve migrácie pomocou jediného príkazu.
php artisan migrate:refresh --step=2
# 6) Zrušte všetky tabuľky a migrujte
Spustite nasledujúci príkaz v príkazovom riadku na zahodiť všetky tabuľky a migrovať .
php artisan migrate:fresh
Laravel Seeding
Pri vývoji aplikácie potrebujete údaje na jej otestovanie. Naočkovanie sa používa na vloženie testovacích údajov do databázy.
Vytvorenie sejačky
Krok 1: Spustením nasledujúceho príkazu v príkazovom riadku vytvorte sejač s názvom UserSeeder .
php artisan make:seederUserSeeder
Tento príkaz vytvorí súbor s názvom UserSeeder.php v databáza / semená adresár.
Krok 2: Otvor UserSeeder.php súbor a upravte existujúci kód, ako je uvedené nižšie.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Krok 3: Otvor Súbor DatabaseSeeder.php v databáza / semená adresár a upravte existujúci kód, ako je uvedené nižšie.
call(UserSeeder::class); } }
Poznámka : DatabaseSeeder trieda sa používa na volanie iných tried semien.
Bežné sejačky
Krok 1: Spustite nasledujúci príkaz v príkazovom riadku na regenerovať autoloader Composeru .
composer dump-autoload
Krok 2: Spustením nasledujúceho príkazu v príkazovom riadku spustite program DatabaseSeeder trieda.
php artisan db:seed
Namiesto spustenia vyššie uvedeného príkazu môžete v príkazovom riadku spustiť nasledujúci príkaz, ktorým spustíte program UserSeeder trieda.
php artisan db:seed --class= UserSeeder
Poznámka : Na príkazovom riadku spustite nasledujúci príkaz do zahodiť všetky tabuľky a znova spustiť všetky migrácie .
php artisan migrate:fresh --seed
Krok 3: Overte vložené údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný tomuto:
Spúšťajú sa nespracované dotazy SQL
Spustenie vkladacieho dotazu
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na vloženie nového záznamu do súboru tútorov stôl.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Krok 2: Navštívte URL: http: //academy.test/ vloženie
Krok 3: Overte vložené údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku.
Spustenie výberového dotazu
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na načítanie údajov z tútorov stôl, ktorý má id rovná sa 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; } });
Krok 2: Navštívte URL: http: /academy.test/select
Krok 3: Prehliadač zobrazí výstup podobný nasledujúcemu obrázku.
Spustenie aktualizačného dotazu
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na aktualizáciu záznamu v tútorov stôl, ktorý má id rovná sa jeden .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Krok 2: Navštívte nasledujúcu adresu URL: http: //academy.test/update
Krok 3: Overte aktualizované údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku:
Spustenie dotazu na odstránenie
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súboru na odstránenie záznamu v priečinku tútorov stôl, ktorý má id rovná sa jeden .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Krok 2: Navštívte URL: http: //academy.test/delete
Krok 3: Overte odstránené údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku:
Laravel Výrečné modely
V architektúre MVC znak M znamenať Model . S údajmi použitými v aplikácii manipuluje model. Všetky modely sú uložené v priečinku aplikácia adresár. The Používateľ Model ( User.php) je predvolený model. Každá tabuľka databázy môže mať zodpovedajúci veľavravný model. Napríklad Tutor model ukladá dáta do tútorov stôl.
Poznámka: Ak nie je uvedené inak, ako názov tabuľky sa použije množné číslo triedy.
Vytvorenie veľavravného modelu
Spustením nasledujúceho príkazu v príkazovom riadku vytvorte model s názvom Tútor .
php artisan make:model Tutor
Tento príkaz vytvorí súbor s názvom Tutor.php v aplikácia adresár.
Namiesto vyššie uvedeného príkazu môžete v príkazovom riadku spustiť nasledujúci príkaz a vytvoriť príkaz migrácia databázy pri vytváraní modelu.
php artisan make:modelTutor --migration
Alebo
php artisan make:modelTutor -m
Oba vyššie uvedené príkazy poskytnú rovnaký výstup.
Vložte údaje
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na vloženie nového záznamu do súboru tútorov stôl.
otázky týkajúce sa testovania softvéru pre skúsených
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Poznámka : Dajte vlastnosť “ použite App Tutor “V trasy / web.php súbor, ako je uvedené nižšie.
Krok 2: Navštívte nasledujúcu adresu URL: http: //academy.test/ vloženie údajov
Krok 3: Overte vložené údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku:

Nájsť údaje
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na vyhľadanie / načítanie záznamu v priečinku tútorov stôl, ktorý má id rovná sa dva .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Krok 2: Navštívte nasledujúcu adresu URL: http: //academy.test/find-data
Krok 3: Prehliadač zobrazí výstup podobný nasledujúcemu obrázku:

Aktualizácia údajov
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súbor na aktualizáciu záznamu v tútorov stôl, ktorý má id rovná sa dva .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
alebo
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Krok 2: Navštívte nasledujúcu adresu URL: http: //academy.test/update-data
Krok 3: Overte aktualizované údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku:

Odstrániť údaje
Krok 1: Pridajte nasledujúci segment kódu do súboru trasy / web.php súboru na odstránenie záznamu v priečinku tútorov stôl, ktorý má id rovná sa dva .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Krok 2: Navštívte nasledujúcu adresu URL: http: //academy.test/delete-data
Krok 3: Overte odstránené údaje pomocou databázy.
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku:

Mäkké odstránenie údajov
Namiesto vymazania údajov z databázy funkcia soft delete nastaví atribút s názvom deleted_at na modeli a vložte ho do tabuľky databázy.
Pomocou nasledujúceho znaku povolíte mäkké odstránenie.
Osvetliť Databáza Výrečný SoftDeletes
Nasledujúci segment kódu možno použiť na mäkké odstránenie údajov.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Získajte mäkké mazanie údajov
The withTrashed () metóda môže byť použitá na získať mäkké mazanie údajov ako je uvedené nižšie.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Obnovte softvérové dáta
The obnoviť () metóda môže byť použitá na obnoviť mäkké mazanie údajov ako je uvedené nižšie.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Trvalo odstrániť údaje
The forceDelete () metóda môže byť použitá na trvalé odstránenie údajov ako je uvedené nižšie.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Výrečné vzťahy laravel
Výrečný vzťah pomáha ľahko prepojiť databázové tabuľky.
čo je operačný systém linux a unix
Výrečné typy vzťahov
Nasledujúci zoznam zobrazuje rôzne typy veľavravných vzťahov:
- Vzťah jedna k jednej
- Vzťah jedna k mnohým
- Vzťah mnoho proti mnohým
- Vzťah has-one-through
- Má vzťah medzi mnohými
- Vzťah jedna k jednej (polymorfná)
- Vzťah typu jedna k mnohým (polymorfný)
- Vzťah mnoho proti mnohým (polymorfný)
# 1) Vzťah one-to-one
Popis: Je to vzájomný vzťah medzi stĺpcami rôznych tabuliek.
Príklad vzájomného vzťahu:
hasOne('AppBook); } }
Príklad vzájomného vzťahu (inverzného):
belongsTo('App Author); } }
# 2) Vzťah one-to-many
Popis: V tomto type vzťahov vlastní jeden model ľubovoľný počet ďalších modelov.
Príklad vzťahu jedna k mnohým:
hasMany('AppReview'); } }
Príklad vzájomného vzťahu (inverzný):
belongsTo('AppTutorial'); } }
# 3) Vzťah medzi mnohými
Popis: Je to komplikovanejší vzťah ako medzi dvoma a medzi dvoma a na vytvorenie takéhoto vzťahu je potrebné vytvoriť kontingenčnú tabuľku.
Príklad vzťahu medzi mnohými:
belongsToMany('AppBook); } }
Príklad veľa (inverzný) vzťah:
belongsToMany('AppAuthor); } }
# 4) Vzťah has-one-through
Popis: Spája modely prostredníctvom jediného stredného vzťahu.
Príklad vzťahu one-through:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Má vzťah medzi mnohými
Popis: Ľahkou metódou umožňuje prístup k vzdialeným alebo stredným vzťahom.
Príklad vzťahu typu „má mnoho cez“:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Individuálny (polymorfný) vzťah
Popis: Je to podobné ako vzťah jedna k jednej, ale cieľový model môže patriť do viac ako jedného typu modelu na jednom združení.
Príklad individuálneho (polymorfného) vzťahu:
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) Vzťah one-to-many (polymorfný)
Popis: Je to podobné ako vzťah typu jedna k mnohým, ale cieľový model môže patriť do viac ako jedného typu modelu v rámci jednej asociácie.
Príklad vzťahu jedna k mnohým (polymorfný):
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) Vzťah medzi mnohými (polymorfný)
Popis: V tomto type vzťahu má cieľový model jedinečné záznamy, ktoré môže zdieľať medzi ostatnými modelmi.
Príklad vzťahu mnoho proti mnohým (polymorfný):
morphToMany('AppComment, commentable); } }
Laravel Remeselník
V predchádzajúcom tutoriáli sme sa to naučili Remeselník je a rozhranie príkazového riadku ( CLI ).
Remeselnícke príkazy
Spustením nasledujúceho príkazu v príkazovom riadku zobrazíte všetky dostupné možnosti Remeselnícke príkazy .
php artisan
Nasledujúca snímka obrazovky zobrazuje výstup vyššie uvedeného príkazu.

Nasledujúca tabuľka zobrazuje niektoré dôležité príkazy remeselníka s príslušnými funkciami, ktoré sú prevzaté z výstupu vyššie uvedeného príkazu (php artisan).
Velenie funkčnosť vyrovnávacia pamäť: vymazaná Vypláchnite vyrovnávaciu pamäť aplikácií Pomoc Zobrazí pomoc s príkazom zoznam Vypíše príkazy migrovať Spustite migráciu databázy test Spustite aplikačné testy drotár Interakcia s vašou aplikáciou auth: clear-resetuje Vypláchnite vypršané tokeny na obnovenie hesla db: semeno Nalejte do databázy záznamy udalosť: zoznam Uveďte zoznam udalostí a poslucháčov aplikácie kľúč: generovať Nastavte kľúč aplikácie značka: kanál Vytvorte novú triedu kanála urobiť: komponent Vytvorte novú triedu komponentov zobrazenia značka: kontrolór Vytvorte novú triedu radiča urobiť: udalosť Vytvorte novú triedu udalostí značka: továreň Vytvorte novú továreň na výrobu modelov urobiť: poslucháč Vytvorte novú triedu poslucháčov udalostí vyrobiť: mail Vytvorte novú e-mailovú triedu vyrobiť: middleware Vytvorte novú triedu middleware urobiť: migrácia Vytvorte nový migračný súbor vyrobiť: model Vytvorte novú triedu modelov Eloquent urobiť: oznámenie Vytvorte novú triedu upozornení urobiť: pozorovateľ Vytvorte novú triedu pozorovateľov urobiť: politika Vytvorte novú triedu politiky značka: poskytovateľ Vytvorte novú triedu poskytovateľa služieb urobiť: zdroj Vytvorte nový zdroj značka: sejačka Vytvorte novú triedu sejacích strojov vyrobiť: otestovať Vytvorte novú testovaciu triedu migrovať: čerstvé Zrušte všetky tabuľky a znova spustite všetky migrácie migrovať: obnoviť Obnovte a znova spustite všetky migrácie migrovať: vynulovať Vrátiť späť všetky migrácie databázy migrovať: vrátiť späť Vrátiť späť poslednú migráciu databázy oznámenia: tabuľka Vytvorte migráciu pre tabuľku upozornení trasa: zoznam Zoznam všetkých zaregistrovaných trás úložisko: odkaz Vytvorte symbolické odkazy nakonfigurované pre aplikáciu
Laravel Tinker
Tinker je REPL (READ-EVAL-PRINT-LOOP), ktorý vám umožňuje komunikovať s aplikáciou na príkazovom riadku. Drotár interaguje s databázou bez registrácie trás.
Tinker použitie s Artisan, a to predvolene obsahuje.
Povolenie prostredia Tinker
Spustením nasledujúceho príkazu v príkazovom riadku povoľte prostredie Tinker.
php artisan tinker
Nasledujúca snímka obrazovky zobrazuje výstup vyššie uvedeného príkazu.

Vložte údaje pomocou nástroja Tinker
Spustením nasledujúcich príkazov v príkazovom riadku vložte nový záznam do priečinka používateľov stôl.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku.

Nájdite údaje pomocou aplikácie Tinker
Spustením nasledujúceho príkazu v príkazovom riadku vyhľadajte / načítajte záznam, ktorý má id rovná dva v používateľov stôl.
$user = AppUser::find(2);
Príkazový riadok zobrazí výstup podobný nasledujúcemu obrázku.

Aktualizujte údaje pomocou aplikácie Tinker
Spustením nasledujúceho príkazu v príkazovom riadku aktualizujte záznam, ktorý má id rovná dva v používateľov stôl.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku.

Odstráňte údaje pomocou aplikácie Tinker
Spustením nasledujúceho príkazu v príkazovom riadku odstráňte záznam, ktorý má id rovná dva v používateľov stôl.
$user = AppUser::find(2); $user->delete();
Databáza bude zobrazovať výstup podobný nasledujúcemu obrázku.

Záver
Laravel Framework interaguje s databázami pomocou nespracovaného jazyka SQL, plynulého nástroja na tvorbu dotazov a veľavravného modulu ORM. S údajmi použitými v aplikácii manipuluje model. Výrečný vzťah pomáha ľahko prepojiť databázové tabuľky.
Migrácia je špeciálna funkcia používaná na vytvorenie databázovej tabuľky. Semeno sa používa na vloženie testovacích údajov do databázy, čo je pre vývojára veľmi užitočné, pretože vývojár potrebuje pri vývoji aplikáciu potrebné na otestovanie aplikácie. Tinker interaguje s databázou bez registrácie trás.
Dúfame, že vám tento návod pomohol! V ďalšom návode si rozoberieme formuláre, nahrávanie súborov, autentifikáciu, posielanie e-mailov, relácie atď.
Šťastné učenie!
<< PREV Tutorial | ĎALŠÍ výukový program >>
Odporúčané čítanie
- Výukový program Laravel Collection and Laravel Forge
- Laravelské formuláre a overovacie pravidlá s príkladom
- Relácia laravel, nahrávanie / sťahovanie súborov a povolenia
- Výukový program pre laravel PHP pre začiatočníkov: Čo je to Laravel Framework
- MongoDB Vytvorenie zálohy databázy
- Testovanie databázy pomocou JMeter
- Výukový program Oracle Database - Čo je Oracle Database?
- Top 10 nástrojov na návrh databázy na zostavenie komplexných dátových modelov