Kuinka tehdä tietokannan kylvö Laravelissa
Aiemmin olen julkaissut artikkelin Kuinka kylvää tietokantaa PHP: ssä Faker Libraryn avulla. Tutkiessani tätä aihetta huomasin, että Laravel käyttää myös samaa kirjastoa tietokannan kylvämiseen. Koska olen kirjoittanut tästä aiheesta artikkelin PHP: lle, päätin kirjoittaa viestin myös Laravel-tietokannan kylvöön. Tämä johtuu siitä, että Laravel käyttää omaa prosessiaan tietokannan luomiseen.
Mikä on tietokannan kylvö?
Tietokannan kylvö tarkoittaa tietokantataulukoiden täyttämistä testitiedoilla ohjelmallisesti. Tällä lähestymistavalla voidaan syöttää tuhansia tietueita tietokantaan muutamassa minuutissa. Se on tehokas tapa sen sijaan, että tekisit sen manuaalisesti. Saatat haluta nuken tietojen testaavan sovellustasi, ja tietokannan lisääminen ohjelman avulla säästää paljon aikaa.
Faker-kirjasto
Faker on avoimen lähdekoodin kirjasto, joka tuottaa väärennettyjä tietoja sovelluksesi tietokantaan. Fakeria käyttämällä voidaan lisätä tuhansia merkintöjä tietokantaan muutamassa minuutissa. Tämä kirjasto tallentaa tylsän tiedon syöttötyön kehittäjille. Voit saada melkein mitä tahansa haluamaasi dataa. Kirjasto luo väärennetyn sähköpostiosoitteen, nimen, matkapuhelinnumeron, sanat, lauseet, kappaleet, satunnaisluvut jne. Voit lukea sellaisia tietoja, jotka ne toimittavat dokumentaatiosta.
Laravel asentaa tämän kirjaston sen ytimeen. Tämä tarkoittaa, että sinun ei tarvitse asentaa sitä erikseen. Tästä huolimatta katsotaanpa, miten tietokantojen kylvö tehdään Laravelissa.
Päästä alkuun
Aloittaakseni aion luoda "asiakkaiden" taulukon, jossa on sarakkeiden nimi, sähköpostiosoite ja bio. Näemme yhden pöydän kylvöprosessin. Samalla tavalla käyttäjät voivat kylvää niin monta taulukkoa kuin haluavat.
Luo siirto asiakkaille -taulukko komennolla:
php artisan make:migration create_customers_table
Avaa siirtotiedosto ja lisää sarakkeet ‘ylös’ -menetelmään alla olevan kuvan mukaisesti.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('bio');
$table->timestamps();
});
}
Suorita siirto-komento, joka luo asiakastaulukon tietokantaan.
php artisan migrate
Luo seuraavaksi malli "Asiakas", joka yhdistää "Asiakkaat" -taulukkoon. Laravel 8.x -käynnistyksen jälkeen mallit luodaan hakemistoon ‘App / Models’. Oletan, että käytät tässä opetusohjelmassa Laravel 8.x -ohjelmaa. Laravelin vanhemmassa versiossa joudut säätämään mallin polkua.
php artisan make:model Customer
Tietokannan kylvö Laravelissa
Tietokannan kylväminen Laravelissa edellyttää sinun suorittavan muutaman vaiheen, jotka ovat kylvökoneiden kirjoittaminen, mallitehtaan luominen ja kylvökoneiden käyttäminen. Tehdään se yksi kerrallaan.
Kylvökoneiden kirjoittaminen
Jos tarkastelet Laravel-tiedostojärjestelmää, huomaat hakemiston database/seeders
. Kaikki siemenluokat menevät tämän hakemiston sisään. Siemenluokalla on run
menetelmä, josta voit lisätä tiedot taulukkoon.
Tee siemenluokka CustomerSeeder komennolla:
php artisan make:seeder CustomerSeeder
Kun olet suorittanut tämän komennon, sinun pitäisi nähdä CustomerSeeder.php
tiedosto, joka on luotu kohdassa database/seeders
. Avaa tämä tiedosto ja run
lisää funktioon seuraava koodi.
public function run()
{
AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
$customer->save();
});
}
Soitan tässä Asiakas-tehtaalle, jonka luomme seuraavassa vaiheessa. Huomaa, että välitin arvon 50 laskentamenetelmälle. Se tarkoittaa, että 50 riviä tulisi lisätä "asiakas" -taulukkoon. Säädä tätä arvoa haluamallasi tavalla.
Tehtaiden luominen
Koodi, johon olen kirjoittanut, CustomerSeeder
etsii tehtaita testitulosten saamiseksi. Se tarkoittaa, että meidän on luotava mallitehdas. Annan tehtaalle nimen CustomerFactory. Luo mallitehdas suorittamalla komento.
php artisan make:factory CustomerFactory --model=Customer
Tämä komento luo hakemiston CustomerFactory.php
sisälle database/factories
. Avaa tämä tiedosto ja luo määritystapaan testitiedot seuraavasti.
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'bio' => $this->faker->text,
];
}
Yllä oleva taulukko palauttaa satunnaisesti valitun nimen, sähköpostiosoitteen ja tekstin.
Käynnissä olevat kylvökoneet
Me kaikki asetimme kylvökoneen ja tehtaan kanssa. Suorita nyt kylvökone alla olevan komennon avulla.
php artisan db:seed --class=CustomerSeeder
Tarkista asiakkaasi taulukko, ja siinä on oltava 50 nukkenimeä.
Yllä oleva komento suorittaa yhden kylvökoneen, jonka ohitimme nimenomaisesti. Oletetaan, että haluat luoda useita kylvökoneita ja suorittaa ne kaikki yhdellä komennolla. Tällaisissa tapauksissa sinun tulisi soittaa kylväjillesi siitä, DatabaseSeeder
joka löytyy samasta hakemistosta database/seeders
.
public function run()
{
$this->call(CustomerSeeder::class);
// call as many seeders you wish
}
Käyttäjä voi luoda tarpeidensa mukaan niin monta kylvökonetta ja soittaa heille tällä run
menetelmällä.
Suorita lopuksi kylvökoneet alla olevan komennon avulla.
php artisan db:seed
Se kutsuu kaikki run
menetelmän kylväjät ja suorittaa sen.
Toivon ymmärtävänne tietokantojen kylvämistä Laravelissa. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.