Модели и конвенции
Создание модели
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
Команда покажет атрибуты, связи и настройки модели.