Hur man gör databaserning i Laravel
Tidigare har jag publicerat en artikel How to Seed Database in PHP using Faker Library. När jag undersökte detta ämne fann jag att Laravel också använder samma bibliotek för sådd av databasen. Eftersom jag har skrivit en artikel om detta ämne för PHP bestämde jag mig för att också skriva ett inlägg på Laravel-databasen. Detta beror på att Laravel använder sin egen process för att sådd databasen.
Vad är databassådd?
Databassådd betyder att du fyller dina databastabeller med testdata programmatiskt. Med detta tillvägagångssätt kan man skriva in tusentals poster i databasen inom några minuter. Det är ett effektivt sätt snarare än att göra det manuellt. Du kanske vill ha falska data för att testa din applikation och sådd databasen genom programmet sparar massor av tid.
Faker-biblioteket
Faker är ett bibliotek med öppen källkod som genererar falska data för din applikations databas. Med hjälp av Faker kan man infoga tusentals poster i databasen på några minuter. Detta bibliotek sparar ett tråkigt jobb för datainmatning för utvecklare. Du kan få nästan vilken typ av data du vill. Biblioteket genererar ett falskt e-postmeddelande, namn, mobilnummer, ord, meningar, stycken, slumptal etc. Du kan läsa vilken typ av data de tillhandahåller i dokumentationen.
Laravel installerar detta bibliotek i sin kärna. Det betyder att du inte behöver installera det separat. Med det sagt, låt oss ta en titt på hur man gör databassådd i Laravel.
Komma igång
För att komma igång ska jag skapa en ‘kundtabell med kolumnnamn, e-post och bio. Vi kommer att se processen för sådd av enkelbordet. På samma sätt kan användare så många tabeller som de vill.
Skapa en migrering för kundtabell med kommandot:
php artisan make:migration create_customers_table
Öppna migreringsfilen och lägg till kolumnerna till "upp" -metoden enligt nedan.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('bio');
$table->timestamps();
});
}
Kör migreringskommandot som skapar en "kundtabell" i din databas.
php artisan migrate
Skapa sedan en modell ‘Kund’ som mappas till ‘kundernas’ tabell. Från och med Laravel 8.x skapas dina modeller i katalogen ‘App / Modeller’. För denna handledning antar jag att du använder Laravel 8.x. I den äldre versionen av Laravel måste du justera modellvägen.
php artisan make:model Customer
Database Seeding in Laravel
Att så en databas i Laravel kräver att du följer några steg som skriver såmaskiner, skapar en modellfabrik och kör såmaskiner. Låt oss göra det en efter en.
Writing Seeders
Om du tittar på Laravel-filsystemet märker du katalogen database/seeders
. Alla fröklasser kommer in i den här katalogen. En fröklass har run
metoden varifrån du kan infoga data i tabellen.
Skapa en seedklass CustomerSeeder med kommandot:
php artisan make:seeder CustomerSeeder
När du har kört detta kommando bör du se CustomerSeeder.php
filen skapad under database/seeders
. Öppna den här filen och run
lägg till nedanstående kod till funktionen.
public function run()
{
AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
$customer->save();
});
}
Här ringer jag kundfabriken som vi kommer att skapa i nästa steg. Observera att jag skickade värdet som 50 till "räkna" -metoden. Det betyder att 50 rader ska infogas i tabellen ‘kunder’. Justera detta värde som du vill.
Skapa fabriker
Koden jag har skrivit in CustomerSeeder
kommer att leta efter en fabrik för att få testdata. Det betyder att vi måste skapa en modellfabrik. Jag kommer att ge ett namn till fabriken som CustomerFactory. Kör kommandot för att generera modellfabriken.
php artisan make:factory CustomerFactory --model=Customer
Detta kommando skapar en CustomerFactory.php
inuti database/factories
katalogen. Öppna den här filen och generera testdata enligt definitionsmetoden enligt följande.
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'bio' => $this->faker->text,
];
}
Ovanstående matris returnerar ett slumpmässigt valt namn, e-post och text för bio.
Running Seeders
Vi är alla inställda på såmaskinen och fabriken. Kör nu vår såmaskin med kommandot nedan.
php artisan db:seed --class=CustomerSeeder
Kontrollera din ‘kundtabell och den ska ha de 50 dummy-posterna infogade.
Ovanstående kommando kör en enda såmaskin som vi passerade uttryckligen. Låt oss säga att du vill skapa flera seeders och köra dem alla med ett enda kommando. I sådana fall bör du ringa din seeders från den DatabaseSeeder
som finns i samma katalog database/seeders
.
public function run()
{
$this->call(CustomerSeeder::class);
// call as many seeders you wish
}
Användaren kan skapa så många såmaskiner enligt deras krav och ringa dem från den här run
metoden.
Slutligen kör seedarna med kommandot nedan.
php artisan db:seed
Det kommer att kalla alla seedarna från run
metoden och utföra den.
Jag hoppas att du förstår om sådd databaser i Laravel. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- PayPal Payments Pro-integration i Laravel
- Skapa Honeypot för att bekämpa skräppost i Laravel
- Lägga till Google reCAPTCHA v3 till din Laravel-webbplats