laravel database migrations
Ovaj vodič objašnjava rukovanje bazom podataka Laravel, migracije, zasijavanje, neobrađene SQL upite, elokventne modele, elokventne odnose, zanatlije i majstore:
U prethodnom tutorialu iz Laravel Tutorial Series , naučili smo o arhitekturi, instalaciji i komponentama Laravel Framework-a. Detaljno smo vidjeli strukturu projekta Laravel PHP.
U ovom ćemo uputstvu pokriti bazu podataka Laravel, migracije, zasijavanje, pokretanje sirovih SQL upita, elokventni modeli, elokventni odnosi, zanatlija i tinker. U svim smo primjerima koristili inačicu Laravel 7.
Što ćete naučiti:
Interakcija baze podataka Laravel
Laravel Framework komunicira s bazama podataka pomoću neobrađeni SQL, tečni graditelj upita, i Elokventan ORM . Podržava sljedeće četiri baze podataka.
- MySQL verzija 5.6+
- PostgreSQL (Postgres) verzija 9.4+
- Verzija SQLite 3.8.8+
- Verzija SQL Servera 2017+
Koraci za povezivanje vašeg projekta s MySQL bazom podataka:
Korak 1: Stvori novo baza podataka imenovan db_ akademija (možete koristiti bilo koje prikladno ime) putem phpMyadmin ili HeidiSQL .
Korak 2: Stvorite novi projekt s imenom akademija (možete koristiti bilo koje prikladno ime).
Bilješka:Pogledajte naš prethodni vodič, Laravel Tutorial for Beginners 1, ako ne znate kako instalirati Laravel i stvoriti novi projekt.
3. korak: Otvorite projekt u IDE-u i otvorite .env datoteka. Promijenite vrijednost DB_DATABASE (naziv baze podataka) u db_ akademija (možete koristiti bilo koje prikladno ime). Oboje naziv baze podataka i vrijednost DB_DATABASE u .env datoteka mora biti ista.
Bilješka : Možda ćete trebati promijeniti druge parametre baze podataka u .env datoteci, poput DB_USERNAME, DB_PASSWOD, itd., Ovisno o konfiguraciji baze podataka.
Sljedeći snimak zaslona prikazuje konfiguraciju baze podataka u .env datoteci.
Laravel migracije
Laravel Migracija je posebna značajka koja se koristi za stvaranje tablice baze podataka. Prema zadanim postavkama xxxx_xx_xx_xxxxxx _create_users_table.php datoteku i xxxx_xx_xx_xxxxxx _create_failed_jobs_table.php datoteka su uključeni.
Struktura migracije Laravel
Klasa migracije Laravel koristi sljedeće dvije metode:
- Metoda up (): Ova metoda koristi se za stvaranje nove tablice, stupca ili indeksa u bazi podataka.
- Metoda down (): Ova se metoda koristi za ispuštanje postojeće tablice, stupca ili indeksa u bazu podataka. Ova je metoda suprotna metodi up ().
Stvaranje migracije Laravel
Izvedite sljedeću naredbu u naredbenom retku da biste kreirali migraciju pod nazivom create_tutors_table .
php artisan make:migrationcreate_tutors_table
Izvršenjem gornje naredbe stvorit će se datoteka s imenom xxxx_xx_xx_xxxxxx_create_tutors_table.php u baza podataka / migracije imenik.
Otvori xxxx_xx_xx_xxxxxx_create_tutors_table.php datoteku i izmijenite postojeći kod kako je prikazano u nastavku.
id(); $table->string('name'); $table->string('subject'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('tutors'); } }
Pokretanje migracija Laravel
Izvedite sljedeću naredbu u naredbenom retku da biste pokrenuli sve dostupne migracije.
php artisan migrate
Gornja naredba će stvoriti relevantne tablice u bazi podataka kao što je prikazano u nastavku.
Vraćanje migracija
# 1) Vraćanje posljednje serije migracija
Pokrenite sljedeću naredbu u naredbenom retku za vraćanje posljednja serija migracija (može uključivati jednu ili više migracija).
php artisan migrate:rollback
# 2) Vraćanje migracija koje pružaju korak
Pokrenite sljedeću naredbu u naredbenom retku za vraćanje posljednje dvije migracije .
php artisan migrate:rollback --step=2
# 3) Vraćanje svih migracija aplikacije
Pokrenite sljedeću naredbu u naredbenom retku na vratiti sve migracije prijave.
php artisan migrate:reset
# 4) Vraćanje unazad i migracija pomoću jedne naredbe
Pokrenite sljedeću naredbu u naredbenom retku na vratiti se i migrirati pomoću jedne naredbe.
php artisan migrate:refresh
# 5) Vraćanje unazad i migracija ograničeno br. migracija
Pokrenite sljedeću naredbu u naredbenom retku na vratiti se i migrirati posljednje dvije migracije pomoću jedne naredbe.
php artisan migrate:refresh --step=2
# 6) Ispustite sve tablice i migrirajte
Pokrenite sljedeću naredbu u naredbenom retku na ispustite sve tablice i migrirajte .
php artisan migrate:fresh
Sjeme Laravel
Kada razvijate aplikaciju, trebaju vam podaci za testiranje aplikacije. Sjetva se koristi za umetanje testnih podataka u bazu podataka.
Stvaranje sijačice
Korak 1: Izvedite sljedeću naredbu u naredbenom retku da biste stvorili sijač pod nazivom UserSeeder .
php artisan make:seederUserSeeder
Ova naredba će stvoriti datoteku s imenom UserSeeder.php u baza podataka / sjeme imenik.
Korak 2: Otvori UserSeeder.php datoteku i izmijenite postojeći kod kako je prikazano u nastavku.
insert(( 'name' => Str::random(5), 'email' => Str::random(5).'@user.com', 'password' => Hash::make('password'), )); } }
Korak 3: Otvori Datoteka DatabaseSeeder.php u baza podataka / sjeme direktorij i izmijenite postojeći kod kako je prikazano u nastavku.
call(UserSeeder::class); } }
Bilješka : The DatabaseSeeder klasa koristi se za pozivanje ostalih klasa sjemena.
Trčanje sijačica
Korak 1: Pokrenite sljedeću naredbu u naredbenom retku na regenerirati Composerov automatski učitavač .
composer dump-autoload
Korak 2: Pokrenite sljedeću naredbu u naredbenom retku da biste pokrenuli DatabaseSeeder razred.
php artisan db:seed
Umjesto da pokrenete gornju naredbu, možete pokrenuti sljedeću naredbu u naredbenom retku za pokretanje UserSeeder razred.
php artisan db:seed --class= UserSeeder
Bilješka : Izvedite sljedeću naredbu u naredbenom retku na ispustite sve tablice i ponovno pokrenite sve migracije .
php artisan migrate:fresh --seed
Korak 3: Provjerite umetnute podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan dolje:
Pokretanje sirovih SQL upita
Pokretanje upita za umetanje
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za umetanje novog zapisa u učitelji stol.
Route::get('/insert', function () { DB::insert('insert into tutors(name,subject) values(?,?)',('Mr John','Computer Science')); });
Korak 2: Posjetite URL: http: //academy.test/insert
Korak 3: Provjerite umetnute podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan sljedećem snimku zaslona.
Pokretanje odabranog upita
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteka za preuzimanje podataka iz učitelji stol koji ima iskaznica jednako je 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; } });
Korak 2: Posjetite URL: http: /academy.test/select
Korak 3: Preglednik će prikazati izlaz sličan sljedećem snimku zaslona.
Pokretanje upita za ažuriranje
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za ažuriranje zapisa u učitelji stol koji ima iskaznica jednako je 1 .
Route::get('/update', function(){ $tutors=DB::update('update tutors set name='Mr. Brown' where id=?',(1)); return $tutors; });
Korak 2: Posjetite sljedeći URL: http: //academy.test/update
Korak 3: Provjerite ažurirane podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan donjoj slici:
Pokretanje upita za brisanje
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za brisanje zapisa u učitelji stol koji ima iskaznica jednako je 1 .
Route::get('/delete',function(){ $tutors=DB::delete('delete from tutors where id=?',(1)); return $tutors; });
Korak 2: Posjetite URL: http: //academy.test/delete
Korak 3: Provjerite izbrisane podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan donjoj slici:
Laravel rječiti modeli
U MVC arhitekturi lik M stoji za Model . Model obrađuje podatke koje aplikacija koristi. Svi su modeli pohranjeni u app imenik. The Korisnik model ( User.php) je zadani model. Svaka tablica baze podataka može imati odgovarajući elokventni model. Na primjer, Tutor model pohranjuje podatke u učitelji stol.
Bilješka: Ime množine klase koristit će se kao naziv tablice, ako nije drugačije naznačeno.
Stvaranje rječitog modela
Izvedite sljedeću naredbu u naredbenom retku da biste stvorili model s imenom Tutor .
php artisan make:model Tutor
Ova naredba će stvoriti datoteku s imenom Tutor.php u app imenik.
Umjesto gornje naredbe, u naredbenom retku možete pokrenuti sljedeću naredbu da biste stvorili migracija baze podataka prilikom izrade modela.
php artisan make:modelTutor --migration
Ili
php artisan make:modelTutor -m
Obje gornje naredbe pružit će isti izlaz.
Umetni podatke
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za umetanje novog zapisa u učitelji stol.
najbolja mobilna špijunska aplikacija za android
Route::get('/insert-data',function(){ $tutor=new Tutor; $tutor->name='Mr George'; $tutor->subject='Mathematics'; $tutor->save(); });
Bilješka : Stavi osobinu “ koristite App Tutor ”U rute / web.php datoteku kao što je prikazano u nastavku.
Korak 2: Posjetite sljedeći URL: http: //academy.test/insert-data
Korak 3: Provjerite umetnute podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan donjoj slici:

Pronađi podatke
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteka za pronalaženje / preuzimanje zapisa u učitelji stol koji ima iskaznica jednako je dva .
Route::get('/find-data',function(){ $tutor=Tutor::find(2); return $tutor->name; });
Korak 2: Posjetite sljedeći URL: http: //academy.test/find-data
Korak 3: Preglednik će prikazati izlaz sličan donjoj slici:

Ažuriranje podataka
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za ažuriranje zapisa u učitelji stol koji ima iskaznica jednako je dva .
Route::get('/update-data',function(){ $tutor=Tutor::find(2); $tutor->name='Ms Georgina'; $tutor->subject='Computer Science'; $tutor->save(); });
ili
Route::get('/update-data',function(){ Tutor::where('id',2)-> update(('name'=>'Ms Georgina','subject'=>'Computer Science')); });
Korak 2: Posjetite sljedeći URL: http: //academy.test/update-data
Korak 3: Provjerite ažurirane podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan donjoj slici:

Izbriši podatke
Korak 1: Dodajte sljedeći segment koda u rute / web.php datoteku za brisanje zapisa u učitelji stol koji ima iskaznica jednako je dva .
Route::get('/delete-data',function(){ $tutor=Tutor::find(2); $tutor->delete(); });
Korak 2: Posjetite sljedeći URL: http: //academy.test/delete-data
Korak 3: Provjerite izbrisane podatke pomoću baze podataka.
Baza podataka prikazat će izlaz sličan donjoj slici:

Soft Delete Data
Umjesto brisanja podataka iz baze podataka, mekim brisanjem postavlja se atribut koji se naziva izbrisani_at na modelu i umetnite ga u tablicu baze podataka.
Upotrijebite sljedeću osobinu da omogućite meko brisanje.
Osvijetlite Database Eloquent SoftDeletes
Sljedeći segment koda može se koristiti za meko brisanje podataka.
Route::get('/soft-delete-data',function(){ Tutor::find(1)->delete(); });
Nabavite softversko brisanje podataka
The withTrashed () metoda se može koristiti za dobiti meko brisanje podataka kako je prikazano dolje.
usporedite dvije datoteke redak po redak
Route::get('/read-soft-delete-data',function(){ $tutor=Tutor::withTrashed()->where('id',1)->get(); return $tutor; });
Vrati podatke mekog brisanja
The vratiti() metoda se može koristiti za vratiti podatke mekog brisanja kako je prikazano dolje.
Route::get('/restore-data',function(){ Tutor::withTrashed()->where('id',1)->restore(); });
Trajno izbriši podatke
The forceDelete () metoda se može koristiti za trajno izbriši podatke kako je prikazano dolje.
Route::get('/force-delete-data',function(){ Tutor::onlyTrashed()->forceDelete(); });
Laravel elokventni odnosi
Elokventan odnos pomaže u jednostavnom povezivanju tablica baze podataka.
Elokventne vrste odnosa
Sljedeći popis prikazuje različite vrste rječitih odnosa:
- Odnos jedan na jedan
- Odnos jedan prema mnogima
- Odnos mnogi prema mnogima
- Ima jedan-jedan odnos
- Ima odnos mnogo-više
- Jedan na jedan (polimorfni) odnos
- Odnos jedan prema mnogima (polimorfni)
- Odnos mnogi prema mnogima (polimorfni)
# 1) Odnos jedan na jedan
Opis: To je odnos jedan prema jedan između stupaca različitih tablica.
Primjer odnosa jedan-na-jedan:
hasOne('AppBook); } }
Primjer odnosa jedan prema jedan (inverzni):
belongsTo('App Author); } }
# 2) Odnos jedan prema mnogima
Opis: U ovoj vrsti odnosa jedan model posjeduje bilo koji broj drugih modela.
Primjer odnosa jedan-prema-mnogima:
hasMany('AppReview'); } }
Primjer odnosa jedan-prema-više (inverzni):
belongsTo('AppTutorial'); } }
# 3) Odnos mnogo-prema-mnogima
Opis: Kompliciraniji je odnos od odnosa jedan-na-jedan i jedan-na-mnogo, a za definiranje takvog odnosa trebate stvoriti stožernu tablicu.
Primjer odnosa mnogi-prema-mnogim:
belongsToMany('AppBook); } }
Primjer odnosa mnogo-prema-mnogima (obrnuto):
belongsToMany('AppAuthor); } }
# 4) Veza s jednim prolaznikom
Opis: Povezuje modele kroz jedan međusobni odnos.
Primjer odnosa jedan-na-jedan:
hasOneThrough('AppOwner', 'AppCar'); } }
# 5) Veze s mnogo ljudi
Opis: Omogućuje pristup udaljenim ili srednjim odnosima na jednostavan način.
Primjer odnosa 'ima mnogo prolaznika':
hasManyThrough('AppBook, 'AppAuthor); } }
# 6) Jedan-na-jedan (polimorfni) odnos
Opis: Sličan je odnosu jedan-na-jedan, ali ciljni model može pripadati više od jednog tipa modela na jednoj asocijaciji.
Primjer odnosa jedan prema jedan (polimorfni):
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 jedan prema mnogima (polimorfni)
Opis: Sličan je odnosu jedan-prema-više, ali ciljni model može pripadati više od jednog tipa modela na jednoj asocijaciji.
Primjer odnosa jedan-prema-mnogima (polimorfni):
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 mnogi-prema-mnogima (polimorfni)
Opis: U ovoj vrsti odnosa ciljni model ima jedinstvene zapise koji mogu dijeliti među ostalim modelima.
Primjer odnosa mnogi-prema-mnogima (polimorfni):
morphToMany('AppComment, commentable); } }
Obrtnik Laravel
U prethodnom uputstvu smo to naučili Obrtnik je sučelje naredbenog retka ( CLI ).
Obrtničke zapovijedi
Pokrenite sljedeću naredbu u naredbenom retku da biste pregledali sve dostupne Zanatske naredbe .
php artisan
Sljedeća snimka zaslona prikazuje izlaz gornje naredbe.

Sljedeća tablica prikazuje neke od važnih naredbi zanatlija sa njihovim odgovarajućim funkcionalnostima, koje su preuzete iz rezultata gornje naredbe (php artisan).
Naredba funkcionalnost predmemorija: jasno Isperite predmemoriju aplikacije Pomozite Prikazuje pomoć za naredbu popis Navodi naredbe migrirati Pokrenite migracije baze podataka test Pokrenite testove aplikacije prtljati Komunicirajte sa svojom aplikacijom auth: obriši-resetira Isperite tokene za poništavanje istekle lozinke db: sjeme Sjeme baze podataka sa zapisima događaj: popis Navedite događaje i slušatelje aplikacije ključ: generirati Postavite aplikacijsku tipku make: kanal Stvorite novu klasu kanala make: komponenta Stvorite novu klasu komponente prikaza make: kontroler Stvorite novu klasu kontrolera make: događaj Stvorite novu klasu događaja make: tvornica Stvorite novu tvornicu modela make: slušatelj Stvorite novu klasu slušatelja događaja napraviti: pošta Stvorite novu klasu e-pošte make: međuoprema Stvorite novu klasu međuopreme napraviti: migracija Stvorite novu datoteku za migraciju make: model Stvorite novu klasu Eloquent modela napraviti: obavijest Stvorite novu klasu obavijesti napraviti: promatrač Stvorite novu klasu promatrača napraviti: politika Stvorite novu klasu pravila make: pružatelj Stvorite novu klasu davatelja usluga make: resurs Stvorite novi resurs napraviti: sijačica Stvorite novu klasu sijačice napraviti: test Izradite novu test klasu migrirati: svježe Ispustite sve tablice i ponovno pokrenite sve migracije migrirati: osvježiti Resetirajte i ponovno pokrenite sve migracije migrirati: resetirati Vrati sve migracije baze podataka migrirati: povrat Vraćanje zadnje migracije baze podataka obavijesti: tablica Stvorite migraciju za tablicu obavijesti ruta: popis Navedi sve registrirane rute pohrana: veza Stvorite simboličke poveznice konfigurirane za aplikaciju
Laravel Tinker
Tinker je REPL (READ-EVAL-PRINT-LOOP) koji vam omogućuje interakciju s aplikacijom na naredbenom retku. Tinker komunicira s bazom podataka bez registracije ruta.
Tinker koristite s Artisanom i uključuje ga prema zadanim postavkama.
Omogućavanje okoliša Tinker
Pokrenite sljedeću naredbu u naredbenom retku da biste omogućili okruženje Tinker.
php artisan tinker
Sljedeća snimka zaslona prikazuje izlaz gornje naredbe.

Umetanje podataka pomoću Tinker-a
Izvedite sljedeće naredbe u naredbeni redak da biste umetnuli novi zapis u korisnika stol.
$user = new AppUser; $user->name = 'User A'; $user->email = 'usera@user.com'; $user->password = 'user123'; $user->save();
Baza podataka prikazat će izlaz sličan sljedećem snimku zaslona.

Pronađite podatke s Tinker-om
Pokrenite sljedeću naredbu u naredbenom retku da biste pronašli / dohvatili zapis koji ima iskaznica jednak dva u korisnika stol.
$user = AppUser::find(2);
U naredbenom retku prikazat će se izlaz sličan sljedećem snimku zaslona.

Ažurirajte podatke pomoću Tinker-a
Pokrenite sljedeću naredbu u naredbenom retku da biste ažurirali zapis koji ima iskaznica jednak dva u korisnika stol.
$user = AppUser::find(2); $user->name = 'User B'; $user->email = 'userb@user.com'; $user->save();
Baza podataka prikazat će izlaz sličan sljedećem snimku zaslona.

Izbrišite podatke pomoću Tinker-a
Pokrenite sljedeću naredbu u naredbenom retku da biste izbrisali zapis koji ima iskaznica jednak dva u korisnika stol.
$user = AppUser::find(2); $user->delete();
Baza podataka prikazat će izlaz sličan sljedećem snimku zaslona.

Zaključak
Laravel Framework komunicira s bazama podataka pomoću sirovog SQL-a, tečnog graditelja upita i elokventnog ORM-a. Model obrađuje podatke koje aplikacija koristi. Elokventan odnos pomaže u jednostavnom povezivanju tablica baze podataka.
Migracija je posebna značajka koja se koristi za stvaranje tablice baze podataka. Sjetva se koristi za umetanje testnih podataka u bazu podataka što je vrlo korisno za programera jer programeru trebaju podaci za testiranje aplikacije prilikom razvoja. Tinker komunicira s bazom podataka bez registracije ruta.
Nadamo se da vam je ovaj vodič bio koristan! U sljedećem uputstvu razgovarat ćemo o obrascima, prijenosu datoteka, autentifikaciji, slanju e-pošte, sesijama itd.
Sretno učenje!
<< PREV Tutorial | Sljedeći vodič >>
Preporučena literatura
- Zbirka Laravel i udžbenik Laravel Forge
- Obrasci Laravel i pravila provjere valjanosti s primjerom
- Sjednica Laravel, prijenos / preuzimanje datoteka i dozvole
- PHP Laravel Vodič za početnike: Što je Laravel Framework
- MongoDB Stvori sigurnosnu kopiju baze podataka
- Ispitivanje baze podataka pomoću JMetera
- Vodič za Oracle baze podataka - Što je Oracle baza podataka?
- 10 najboljih alata za dizajn baze podataka za izgradnju složenih modela podataka