✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur man gör databaserning i Laravel

30

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 runmetoden 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.phpfilen skapad under database/seeders. Öppna den här filen och runlä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 CustomerSeederkommer 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.phpinuti database/factorieskatalogen. Ö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 DatabaseSeedersom 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 runmetoden.

Slutligen kör seedarna med kommandot nedan.

php artisan db:seed

Det kommer att kalla alla seedarna från runmetoden 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

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer