Урок 02

Модели и конвенции

Создание модели

php artisan make:model Post

С миграцией:

php artisan make:model Post -m

С миграцией, сидером, фабрикой и контроллером:

php artisan make:model Post -msfc

Таблица

По умолчанию Eloquent связывает модель Post с таблицей posts. Если таблица называется иначе:

protected $table = 'my_posts';

Первичный ключ

Eloquent предполагает, что первичный ключ — колонка id и он автоинкрементный. Если нет:

protected $primaryKey = 'post_id';

Если ключ не автоинкрементный:

public $incrementing = false;

Если ключ строковый (UUID):

protected $keyType = 'string';

Массовое присваивание

Eloquent защищает от массового присваивания. По умолчанию все поля запрещены. Нужно указать разрешённые:

protected $fillable = ['title', 'body', 'published_at'];

Альтернатива — чёрный список:

protected $guarded = ['id'];

$guarded означает «всё, кроме перечисленного». Используй что-то одно.

Приведение типов

Поля из БД приходят строками. Casts приводят их к нужному типу:

protected $casts = [
    'published_at' => 'datetime',
    'is_active' => 'boolean',
    'options' => 'array',
    'price' => 'decimal:2',
];

Теперь $post->published_at — объект Carbon, а не строка.

Timestamps

Eloquent автоматически управляет колонками created_at и updated_at. Если их нет в таблице:

public $timestamps = false;

Если нужно переименовать:

const CREATED_AT = 'creation_date';
const UPDATED_AT = 'updated_date';

Проверка модели

php artisan model:show Post

Команда покажет атрибуты, связи и настройки модели.