Создание фабрики модели в Laravel
Фабрику создают Artisan-командой.
Для модели User:
php artisan make:factory UserFactory --model=User
В папке database/factories/
появится класс UserFactory.
В нем задают метод definition -
массив полей для новой записи:
<?php
namespace Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
class UserFactory extends Factory
{
public function definition(): array
{
return [
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
'age' => fake()->numberBetween(18, 60),
];
}
}
?>
Ключи массива совпадают с именами колонок таблицы. Значения берут из Faker - см. раздел Faker этого учебника.
Чтобы фабрика работала с моделью,
в классе User подключают
трейт HasFactory:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
use HasFactory;
}
?>
После этого Laravel связывает модель
с фабрикой по имени: User
и UserFactory.
Создайте фабрику для модели
Post с полями
title, slug
и text.
Какой метод фабрики возвращает массив атрибутов записи?