Модель
Model — класс с зарезервированными методами и свойствами для работы с базой. Позволяет не писать обычные SQL запросы.
Базовый вариант создания модели
php artisan make:model Picture
Модель используя магию знает с какой табличкой ей работать. Основывается на имени класса, преобразуя его в название таблицы. Например класс Picture а таблица pictures.
Но мы магию не признаем и указываем конкретное название таблички внутри класса.
protected $table = "pictures";
При работе с таблицей можно (и нужно) указывать те атрибуты с которыми можно работать или наоборот указать те которые должны быть защищены (при записи или обновлении).
protected $guarded= []; - список запрещенных атрибутов
protected $fillable = []; - список разрешенных атрибутов
Проще всего указать именно «guarded» с пустым массивом или false для того чтобы разрешить изменения всех атрибутов таблицы.
Миграция
В миграциях прописаны инструкции для создания таблиц, их изменения или удаления. В базе существует отдельная таблица в которой указано какие миграции отработали а какие нет, эти данные учитываются при запуске новых миграций.
Базовый вариант создания миграции. Название для таблицы которая будет создана при миграции находится между create_ и _table.
php artisan make:migration create_pictures_table
Важно соблюдать порядок миграций, как минимум в начале должно быть создание таблицы и только потом ее изменение. Тоже самое касается и содержания таблиц.
Команды для работы с миграциями.
- php artisan migrate — накатить
- php artisan migrate:rollback — откатить последний запрос
- php artisan migrate:reset — откатить все миграции сразу
- php artisan migrate:refresh — откатить все миграции и сразу накатить
В каждой миграции есть 2 метода, это up() который выполняется при накатывании миграции и метод down() который выполняется при ее откате. Оба метода должны быть всегда прописаны и всегда они делают зеркальные методы. Если в up создается таблица то в down она должна удаляться и наоборот.
- $table->id(); создает первичный ключ (уникально, автоинкремент)
- $table->timestamps(); создает 2 колонки с временем создания и изменения записи. Заполняются автоматически.
- ()->default($value) — установит значение по умолчанию
- ()->nullable() — может ли атрибут быть пустым (true по умолчанию)
- ()->unique() — уникальный атрибут, индексируется
Одновременное создание модели и миграции
php artisan make:model Picture -m
В примере «Picture» написано в единственном числе целенаправленно.
В миграции будет создана таблица с тем же названием но во множественном числе.
Название модели не меняется.