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.