Kuidas teha andmebaasi külvamist Laravelis
Varem olen avaldanud artikli Faker Library abil artikli PHP andmebaasi külvamiseks. Seda teemat uurides leidsin, et Laravel kasutab sama raamatukogu ka andmebaasi külvamiseks. Kuna olen sel teemal kirjutanud artikli PHP-le, otsustasin kirjutada postituse ka Laraveli andmebaasi külvamise kohta. Seda seetõttu, et Laravel kasutab andmebaasi külvamiseks oma protsessi.
Mis on andmebaaside külvamine?
Andmebaasi külvamine tähendab, et täitke andmebaasi tabelid testandmetega programmiliselt. Selle lähenemisviisi abil saab mõne minuti jooksul andmebaasi sisestada tuhandeid kirjeid. See on tõhus viis, mitte käsitsi. Võimalik, et soovite rakenduse testimiseks näivaid andmeid ja andmebaasi külvamine programmi kaudu säästab tonni aega.
Fakeri raamatukogu
Faker on avatud lähtekoodiga teek, mis genereerib teie rakenduse andmebaasi jaoks võltsandmeid. Fakeri abil saab paari minuti jooksul sisestada andmebaasi tuhandeid kirjeid. See teek salvestab arendajatele igava andmesisestustöö. Võite saada peaaegu kõiki andmeid, mida soovite. Raamatukogu genereerib võltsitud e-posti aadressi, nime, mobiilinumbri, sõnad, laused, lõigud, juhuslikud numbrid jne. Võite lugeda, milliseid andmeid nad dokumentatsioonis esitavad .
Laravel installib selle raamatukogu oma keskmesse. See tähendab, et te ei pea seda eraldi installima. Nagu öeldud, vaatame, kuidas Laravelis andmebaasi külvamist teha.
Alustamine
Alustamiseks koostan "klientide" tabeli veergude nime, e-posti aadressi ja elulookirjeldusega. Näeme ühe tabeli külvamise protsessi. Samamoodi saavad kasutajad külvata nii palju tabeleid kui nad tahavad.
Looge klientide tabeli jaoks migreerimine käsuga:
php artisan make:migration create_customers_table
Avage migratsioonifail ja lisage veerud meetodile „üles", nagu allpool näidatud.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('bio');
$table->timestamps();
});
}
Käivitage käsk migrate, mis loob teie andmebaasi ‘klientide’ tabeli.
php artisan migrate
Seejärel looge mudel "Klient", mis kaardistatakse tabelisse "Kliendid". Laravel 8.x käivitamisel luuakse teie mudelid kataloogis ‘App / Models’. Selle õpetuse jaoks eeldan, et kasutate Laravel 8.x-i. Laraveli vanemas versioonis peate kohandama mudeli teed.
php artisan make:model Customer
Andmebaasi külvamine Laravelis
Laraveli andmebaasi külvamiseks peate järgima mõnda sammu, mis on külvikute kirjutamine, mudelitehase loomine ja külvikute käitamine. Teeme seda ükshaaval.
Külvikute kirjutamine
Kui vaatate Laraveli failisüsteemi, märkate kataloogi database/seeders
. Kõik seemneklassid lähevad sellesse kataloogi. Seemneklassis on run
meetod, kust saate andmed tabelisse sisestada.
Tehke seemneklassi CustomerSeeder käsuga:
php artisan make:seeder CustomerSeeder
Pärast selle käsu käivitamist peaksite nägema CustomerSeeder.php
all loodud faili database/seeders
. Avage see fail ja run
lisage funktsioonile allolev kood.
public function run()
{
AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
$customer->save();
});
}
Siin helistan kliendivabrikule, mille loome järgmises etapis. Pange tähele, et andsin väärtusele 50 loenduse meetodile. See tähendab, et tabelisse „kliendid” tuleks lisada 50 rida. Reguleerige seda väärtust vastavalt oma soovile.
Tehaste loomine
Kood, kuhu olen kirjutanud, CustomerSeeder
otsib testiandmete saamiseks tehast. See tähendab, et peame looma mudelitehase. Annan tehasele nime CustomerFactory. Mudelitehase loomiseks käivitage käsk.
php artisan make:factory CustomerFactory --model=Customer
See käsk loob kataloogi CustomerFactory.php
sisekülje database/factories
. Avage see fail ja genereerige määratlusmeetodile testandmed järgmiselt.
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'bio' => $this->faker->text,
];
}
Ülaltoodud massiiv tagastab bio jaoks juhuslikult valitud nime, e-posti aadressi ja teksti.
Töötavad külvikud
Seadsime kõik koos külviku ja tehasega. Nüüd käivitage meie külvik, kasutades allolevat käsku.
php artisan db:seed --class=CustomerSeeder
Kontrollige oma klientide tabelit ja sinna peaks olema sisestatud 50 näivakirjet.
Ülaltoodud käsk käivitab ühe külviku, millest me sõnaselgelt möödusime. Oletame, et soovite luua mitu külvikut ja käitada neid kõiki ühe käsu abil. Sellistel juhtudel peaksite helistama oma külvikutele, DatabaseSeeder
mis asuvad samas kataloogis database/seeders
.
public function run()
{
$this->call(CustomerSeeder::class);
// call as many seeders you wish
}
Kasutaja saab luua nii palju külvikuid kui tema nõuded ja helistada neile selle run
meetodi abil.
Lõpuks käivitage külvikud, kasutades allolevat käsku.
php artisan db:seed
See kutsub run
meetodi järgi kõik külvikud ja täidab selle.
Loodan, et saate aru andmebaaside külvamisest Laravelis. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.