Ok, zaczynamy się bawić ORMem Laravela – to coś, czego w naszym projekcie MVC nie mieliśmy, choć zręby tego już utworzyliśmy. Do dzieła.

Na początku ustawiamy w .env bazę danych (w miejsce PASSWORD wpisz swoje hasło):

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=layoutappdb
DB_USERNAME=root
DB_PASSWORD=

Ok, teraz php artisan migrate. Yes i enter, gdy zapyta czy taką bazę danych utworzyć. Teraz tworzymy model, migrację, fabyrkę i seeder komendą:

php artisan make:model Person -mfs

Teraz tworzymy migrację:

 public function up(): void
    {
        Schema::create('people', function (Blueprint $table) {
            $table->id();
            $table->string('firstName');
            $table->string('lastName');
            $table->integer('age');
            $table->timestamps();
        });
    }

Na tym poziomie nie tłumaczę już wszystkiego w godzinnych elaboratach. W razie czego odsyłam do lekcji poprzednich i dokumentacji. Ok, teraz model:

class Person extends Model
{
    protected $fillable = ['firstName', 'lastName', 'age'];
    use HasFactory;
}

Fabryka:

class PersonFactory extends Factory
{
    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'firstName' => fake()->firstName(),
            'lastName' => fake()->lastName(),
            'age' => random_int(16,60)
        ];
    }
}

Seeder:

<?php

namespace Database\Seeders;

use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Person;
class PersonSeeder extends Seeder
{
    /**
     * Run the database seeds.
     */
    public function run(): void
    {
        Person::factory()
        ->count(10)
        ->create();
    }
}

Komenda:

php artisan db:seed --class=PersonSeeder

Teraz przechodzimy do phpmyadmin, do bazy danych layoutappdb, do tabeli o nazwie „people” (magia, sam ją tak nazwał [Laravel] w oparciu o nazwę modelu) i patrzymy, co mamy:

1 	Telly 	Hermann 	18 	2024-08-15 12:22:14 	2024-08-15 12:22:14
2 	Laney 	Terry 	37 	2024-08-15 12:22:14 	2024-08-15 12:22:14
3 	Kaitlyn 	Kertzmann 	35 	2024-08-15 12:22:14 	2024-08-15 12:22:14
(...)
10 	Elliot 	Reilly 	39 	2024-08-15 12:22:14 	2024-08-15 12:22:14

Oczywiście dane fejkowe, za każdym razem będą inne. I to się nazywa seeding, robimy to, aby testować manualnie jak co wyglądać będzie jak już wielu użytkowników (czy innych rekordów) będziemy mieli.