MVC — Model (Migration)

Модель

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» написано в единственном числе целенаправленно.

В миграции будет создана таблица с тем же названием но во множественном числе.

Название модели не меняется.