laravel database migrations
Tento kurz vysvětluje zpracování laravel databáze, migrace, nasazení, nezpracované dotazy SQL, výmluvné modely, výmluvné vztahy, řemeslník a Tinker:
V předchozím tutoriálu z Laravel Tutorial Series , jsme se dozvěděli o architektuře, instalaci a komponentách Laravel Framework. Strukturu projektu Laravel PHP jsme viděli podrobně.
V tomto kurzu se budeme věnovat Laravel Database, Migration, Seeding, Running Raw SQL Queries, Eloquent Models, Eloquent Relationships, Artisan a Tinker. Ve všech příkladech jsme použili Laravel verze 7.
Co se naučíte:
Interakce laravel databáze
Laravel Framework interaguje s databázemi pomocí raw SQL, tvůrce plynulých dotazů, a Výmluvný ORM . Podporuje následující čtyři databáze.
- MySQL verze 5.6+
- PostgreSQL (Postgres) verze 9.4+
- SQLite verze 3.8.8+
- Verze serveru SQL Server 2017+
Kroky pro připojení projektu k databázi MySQL:
Krok 1: Vytvoř nový databáze pojmenovaný db_ akademie (můžete použít jakýkoli vhodný název) prostřednictvím phpMyadmin nebo HeidiSQL .
Krok 2: Vytvořte nový projekt s názvem akademie (můžete použít jakýkoli vhodný název).
Poznámka:Pokud nevíte, jak nainstalovat Laravel a vytvořit nový projekt, podívejte se na náš předchozí tutoriál Laravel Tutorial pro začátečníky 1.
Krok č. 3: Otevřete projekt v IDE a otevřete .env soubor. Změňte hodnotu DB_DATABASE (název databáze) do db_ akademie (můžete použít jakýkoli vhodný název). Oba jméno databáze a hodnota DB_DATABASE v .env soubor musí být stejný.
Poznámka : Možná budete muset změnit další parametry databáze v souboru .env, jako je DB_USERNAME, DB_PASSWOD atd., V závislosti na konfiguraci vaší databáze.
Následující snímek obrazovky ukazuje konfiguraci databáze v souboru .env.
Laravelské migrace
Laravel Migration je speciální funkce sloužící k vytvoření databázové tabulky. Ve výchozím nastavení je xxxx_xx_xx_xxxxxx _create_users_table.php soubor a xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php soubor jsou zahrnuty.
Struktura migrace laravel
Třída migrace laravel používá následující dvě metody:
- Metoda up (): Tato metoda se používá k vytvoření nové tabulky, sloupce nebo indexu v databázi.
- Metoda down (): Tato metoda se používá k přetažení existující tabulky, sloupce nebo indexu v databázi. Tato metoda je opačnou metodou metody up ().
Vytvoření migrace laravel
Spuštěním následujícího příkazu v příkazovém řádku vytvořte migraci s názvem create_tutors_table .
php artisan make:migrationcreate_tutors_table
Provedením výše uvedeného příkazu se vytvoří soubor s názvem xxxx_xx_xx_xxxxxx_create_tutors_table.php v databáze / migrace adresář.
Otevři xxxx_xx_xx_xxxxxx_create_tutors_table.php soubor a upravte stávající kód, jak je uvedeno níže.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Probíhá migrace laravel
Spuštěním následujícího příkazu v příkazovém řádku spusťte všechny dostupné migrace.
php artisan migrate
Výše uvedený příkaz vytvoří příslušné tabulky v databázi, jak je znázorněno níže.
Vrácení migrací zpět
# 1) Vrácení poslední dávky migrací
Spusťte následující příkaz v příkazovém řádku a vráťte zpět poslední dávka migrací (může zahrnovat jednu nebo více migrací).
php artisan migrate:rollback
# 2) Vrácení zpět migrace poskytující krok
Spusťte následující příkaz v příkazovém řádku a vráťte zpět poslední dvě migrace .
php artisan migrate:rollback --step=2
# 3) Vrácení zpět všech migrací aplikace
Na příkazovém řádku spusťte následující příkaz vrátit všechny migrace zpět aplikace.
php artisan migrate:reset
# 4) Vrácení zpět a migrace pomocí jediného příkazu
Na příkazovém řádku spusťte následující příkaz vrátit zpět a migrovat pomocí jediného příkazu.
php artisan migrate:refresh
# 5) Vrácení zpět a migrace omezené ne. migrací
Na příkazovém řádku spusťte následující příkaz vrátit zpět a migrovat poslední dvě migrace pomocí jediného příkazu.
php artisan migrate:refresh --step=2
# 6) Zrušte všechny tabulky a proveďte migraci
Na příkazovém řádku spusťte následující příkaz zahodit všechny tabulky a migrovat .
php artisan migrate:fresh
Laravel Seeding
Když vyvíjíte aplikaci, potřebujete data k testování aplikace. Semeno se používá k vložení testovacích dat do databáze.
Vytvoření secího stroje
Krok 1: Spusťte následující příkaz v příkazovém řádku a vytvořte secí stroj s názvem UserSeeder .
php artisan make:seederUserSeeder
Tento příkaz vytvoří soubor s názvem UserSeeder.php v databáze / semena adresář.
Krok 2: Otevři UserSeeder.php soubor a upravte stávající kód, jak je uvedeno níže.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Krok 3: Otevři Soubor DatabaseSeeder.php v databáze / semena adresář a upravte stávající kód, jak je uvedeno níže.
call(UserSeeder::class); } }
Poznámka : DatabaseSeeder třída se používá k volání jiných semenných tříd.
Běžící secí stroje
Krok 1: Na příkazovém řádku spusťte následující příkaz regenerovat autoloader Composeru .
composer dump-autoload
Krok 2: Spusťte následující příkaz v příkazovém řádku a spusťte DatabaseSeeder třída.
php artisan db:seed
Místo spuštění výše uvedeného příkazu můžete spustit následující příkaz v příkazovém řádku a spustit UserSeeder třída.
php artisan db:seed --class= UserSeeder
Poznámka : Na příkazovém řádku spusťte následující příkaz zrušit všechny tabulky a znovu spustit všechny migrace .
php artisan migrate:fresh --seed
Krok 3: Ověřte vložená data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému:
Spouštění surových dotazů SQL
Spuštění vkládacího dotazu
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor pro vložení nového záznamu do učitelé stůl.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Krok 2: Navštivte adresu URL: http: //academy.test/ vložení
Krok 3: Ověřte vložená data pomocí databáze.
Databáze zobrazí výstup podobný následujícímu snímku obrazovky.
Spuštění vybraného dotazu
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor pro načtení dat z učitelé stůl, který má id rovná se 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štivte adresu URL: http: /academy.test/select
Krok 3: Prohlížeč zobrazí výstup podobný následujícímu snímku obrazovky.
Spuštění aktualizačního dotazu
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor k aktualizaci záznamu v souboru učitelé stůl, který má id rovná se 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Krok 2: Navštivte následující adresu URL: http: //academy.test/update
Krok 3: Ověřte aktualizovaná data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému obrázku:
Spuštění dotazu na odstranění
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor k odstranění záznamu v souboru učitelé stůl, který má id rovná se 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Krok 2: Navštivte adresu URL: http: //academy.test/delete
Krok 3: Ověřte odstraněná data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému obrázku:
Laravel výmluvné modely
V architektuře MVC znak M znamená Modelka . Model zpracovává data používaná aplikací. Všechny modely jsou uloženy v aplikace adresář. The Uživatel Modelka ( User.php) je výchozí model. Každá tabulka databáze může mít odpovídající výmluvný model. Například Tutor model ukládá data do učitelé stůl.
Poznámka: Pokud není uvedeno jinak, použije se jako název tabulky množné číslo třídy.
Vytvoření výmluvného modelu
Spusťte následující příkaz v příkazovém řádku a vytvořte model s názvem Tutor .
php artisan make:model Tutor
Tento příkaz vytvoří soubor s názvem Tutor.php v aplikace adresář.
Místo výše uvedeného příkazu můžete v příkazovém řádku spustit následující příkaz a vytvořit migrace databáze při vytváření modelu.
php artisan make:modelTutor --migration
Nebo
php artisan make:modelTutor -m
Oba výše uvedené příkazy poskytnou stejný výstup.
Vložte data
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor pro vložení nového záznamu do učitelé stůl.
zdarma blokování automaticky otevíraných oken pro Google Chrome
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Poznámka : Dejte rys “ použijte App Tutor “V trasy / web.php soubor, jak je uvedeno níže.
Krok 2: Navštivte následující adresu URL: http: //academy.test/ vložení- data
Krok 3: Ověřte vložená data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému obrázku:

Najít data
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor k vyhledání / načtení záznamu v souboru učitelé stůl, který má id rovná se dva .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Krok 2: Navštivte následující adresu URL: http: //academy.test/find-data
Krok 3: Prohlížeč zobrazí výstup podobný obrázku níže:

Aktualizovat data
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor k aktualizaci záznamu v souboru učitelé stůl, který má id rovná se dva .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
nebo
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Krok 2: Navštivte následující adresu URL: http: //academy.test/update-data
Krok 3: Ověřte aktualizovaná data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému obrázku:

Odstranit data
Krok 1: Přidejte následující segment kódu do souboru trasy / web.php soubor k odstranění záznamu v souboru učitelé stůl, který má id rovná se dva .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Krok 2: Navštivte následující adresu URL: http: //academy.test/delete-data
Krok 3: Ověřte odstraněná data pomocí databáze.
Databáze zobrazí výstup podobný níže uvedenému obrázku:

Měkké mazání dat
Místo mazání dat z databáze, měkké odstranění nastaví atribut s názvem deleted_at na modelu a vložte jej do tabulky databáze.
Pomocí následujícího znaku povolíte měkké odstranění.
Illuminate Database Eloquent SoftDeletes
Následující segment kódu lze použít k měkkému mazání dat.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Získejte měkké mazání dat
The withTrashed () lze použít metodu získejte měkké mazání dat Jak je ukázáno níže.
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Obnovte data měkkého smazání
The obnovit() lze použít metodu obnovit měkké mazání dat Jak je ukázáno níže.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Trvale odstranit data
The forceDelete () lze použít metodu trvale smazat data Jak je ukázáno níže.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Laravel výmluvné vztahy
Výmluvný vztah pomáhá snadno propojit databázové tabulky.
Výmluvné typy vztahů
Následující seznam ukazuje různé typy výmluvných vztahů:
- Vztah jedna ku jedné
- Vztah jedna k mnoha
- Vztah mnoho k mnoha
- Má vztah one-through
- Má vztah mezi mnoha lidmi
- Vztah jedna k jedné (polymorfní)
- Vztah jedna k mnoha (polymorfní)
- Vztah mnoho k mnoha (polymorfní)
# 1) Vztah one-to-one
Popis: Jedná se o vzájemný vztah mezi sloupci různých tabulek.
Příklad vztahu jeden na jednoho:
Jak převrátíte pole na místo v Javě?
hasOne('AppBook); } }
Příklad vzájemného vztahu (inverzní):
belongsTo('App Author); } }
# 2) Vztah jeden k mnoha
Popis: V tomto typu vztahu vlastní jeden model libovolný počet dalších modelů.
Příklad vztahu jedna k více:
hasMany('AppReview'); } }
Příklad vztahu mezi dvěma (inverzní):
belongsTo('AppTutorial'); } }
# 3) Vztah mezi mnoha
Popis: Je to komplikovanější vztah než vztahy one-to-one & one-to-many a je třeba vytvořit kontingenční tabulku k definování takového vztahu.
Příklad vztahu mnoho k mnoha:
belongsToMany('AppBook); } }
Příklad mnohočetného (inverzního) vztahu:
belongsToMany('AppAuthor); } }
# 4) Má vztah One-Through
Popis: Spojuje modely prostřednictvím jediného mezilehlého vztahu.
Příklad jednorázového vztahu:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Má mnoho vztahů
Popis: Umožňuje snadný přístup ke vzdáleným nebo mezilehlým vztahům.
Příklad vztahu mezi mnoha účastníky:
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Individuální (polymorfní) vztah
Popis: Je to podobné vztahu 1: 1, ale cílový model může patřit k více než jednomu typu modelu na jednom přidružení.
Příklad vztahu jedna k jedné (polymorfní):
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) Vztah jeden k mnoha (polymorfní)
Popis: Je to podobné vztahu jedna k mnoha, ale cílový model může patřit k více než jednomu typu modelu na jedné asociaci.
Příklad vztahu jedna k mnoha (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) Vztah mnoho k mnoha (polymorfní)
Popis: V tomto typu vztahu má cílový model jedinečné záznamy, které lze sdílet mezi ostatními modely.
Příklad vztahu mnoho k mnoha (polymorfní):
morphToMany('AppComment, commentable); } }
Laravel Řemeslník
V předchozím tutoriálu jsme se to naučili Řemeslník je rozhraní příkazového řádku ( CLI ).
Řemeslné příkazy
Spuštěním následujícího příkazu v příkazovém řádku zobrazte všechny dostupné položky Řemeslné příkazy .
php artisan
Následující snímek obrazovky ukazuje výstup výše uvedeného příkazu.

V následující tabulce jsou uvedeny některé důležité příkazy řemeslníka s příslušnými funkcemi, které jsou převzaty z výstupu výše uvedeného příkazu (php artisan).
Příkaz funkčnost mezipaměť: vymazat Vypláchněte mezipaměť aplikace Pomoc Zobrazí nápovědu k příkazu seznam Vypíše příkazy migrovat Spusťte migraci databáze test Spusťte testy aplikace dráteník Interakce s vaší aplikací auth: clear-resetuje Vypláchněte prošlé tokeny pro resetování hesla db: semeno Naočkujte databázi se záznamy událost: seznam Seznam událostí a posluchačů aplikace klíč: generovat Nastavte klíč aplikace make: channel Vytvořte novou třídu kanálu make: součástka Vytvořte novou třídu komponenty pohledu make: ovladač Vytvořte novou třídu řadičů udělat: událost Vytvořte novou třídu událostí značka: továrna Vytvořte novou továrnu na modely make: posluchač Vytvořte novou třídu posluchače událostí make: mail Vytvořte nový e-mailový kurz make: middleware Vytvořte novou třídu middlewaru make: migrace Vytvořte nový migrační soubor vytvořit model Vytvořte novou třídu výmluvných modelů udělat: oznámení Vytvořte novou třídu oznámení make: pozorovatel Vytvořte novou třídu pozorovatelů udělat: politika Vytvořte novou třídu zásad make: poskytovatel Vytvořte novou třídu poskytovatelů služeb make: zdroj Vytvořte nový zdroj značka: secí stroj Vytvořte novou třídu secích strojů make: test Vytvořte novou testovací třídu migrovat: čerstvé Zrušte všechny tabulky a znovu spusťte všechny migrace migrovat: obnovit Resetujte a znovu spusťte všechny migrace migrovat: resetovat Vrátit zpět všechny migrace databáze migrovat: vrácení zpět Vrátit zpět poslední migraci databáze oznámení: tabulka Vytvořte migraci pro tabulku oznámení trasa: seznam Seznam všech registrovaných tras úložiště: odkaz Vytvořte symbolické odkazy nakonfigurované pro aplikaci
Laravel Tinker
Tinker je REPL (READ-EVAL-PRINT-LOOP), který umožňuje interakci s aplikací na příkazovém řádku. Dráteník interaguje s databází bez registrace tras.
Tinker použití s Artisan, a to zahrnuje ve výchozím nastavení.
Povolení prostředí Tinker
Spuštěním následujícího příkazu v příkazovém řádku povolte prostředí Tinker.
php artisan tinker
Následující snímek obrazovky ukazuje výstup výše uvedeného příkazu.

Vložte data pomocí nástroje Tinker
Spusťte následující příkazy v příkazovém řádku a vložte nový záznam do souboru uživatelů stůl.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Databáze zobrazí výstup podobný následujícímu snímku obrazovky.

Najděte data pomocí Tinkeru
Spusťte následující příkaz v příkazovém řádku a vyhledejte / načtěte záznam, který má id rovná dva v uživatelů stůl.
$user = AppUser::find(2);
Příkazový řádek zobrazí výstup podobný následujícímu snímku obrazovky.

Aktualizujte data pomocí Tinkeru
Spusťte následující příkaz v příkazovém řádku a aktualizujte záznam, který má id rovná dva v uživatelů stůl.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Databáze zobrazí výstup podobný následujícímu snímku obrazovky.

Smažte data pomocí nástroje Tinker
Spusťte následující příkaz v příkazovém řádku a odstraňte záznam, který má id rovná dva v uživatelů stůl.
$user = AppUser::find(2); $user->delete();
Databáze zobrazí výstup podobný následujícímu snímku obrazovky.

Závěr
Laravel Framework interaguje s databázemi pomocí surového SQL, nástroje pro vytváření plynulých dotazů a výmluvného ORM. Model zpracovává data používaná aplikací. Výmluvný vztah pomáhá snadno propojit databázové tabulky.
Migrace je speciální funkce používaná k vytvoření databázové tabulky. Semeno se používá k vložení testovacích dat do databáze, což je pro vývojáře velmi užitečné, protože vývojář potřebuje data k testování aplikace při vývoji. Tinker interaguje s databází bez registrace tras.
Doufáme, že vám tento návod pomohl! V dalším kurzu probereme formuláře, nahrávání souborů, ověřování, odesílání e-mailů, relace atd.
Šťastné učení!
<< PREV Tutorial | DALŠÍ výukový program >>
Doporučené čtení
- Výukový program Laravel Collection and Laravel Forge
- Laravelské formuláře a ověřovací pravidla s příkladem
- Laravel relace, nahrávání / stahování souborů a oprávnění
- Výukový program pro laravel PHP pro začátečníky: Co je to Laravel Framework
- MongoDB Vytvořit zálohu databáze
- Testování databáze pomocí JMeter
- Výukový program Oracle Database - Co je Oracle Database?
- Top 10 databázových návrhových nástrojů pro vytváření komplexních datových modelů