Создание таблиц Laravel с помощью миграций
Development, PHP | Комментировать запись
Laravel – это открытый PHP-фреймворк, в котором вы найдете набор инструментов и ресурсов для создания современных PHP-приложений. Эта серия руководств поможет вам создать простое приложение на платформе Laravel, используя среду разработки PHP, контейнеризованную при помощи Docker Compose. В итоге вы получите одностраничный веб-сайт, которым можно управлять с помощью команд Artisan. На этом сайте вы сможете делиться с аудиторией актуальными ссылками.
Примечание: Другие части этой серии можно найти по этой ссылке.
Миграция базы данных Laravel позволяет разработчикам быстро загружать, уничтожать и воссоздавать БД приложения, не входя при этом в консоль БД и не выполняя никаких SQL-запросов.
В этом мануале мы создадим миграцию, чтобы настроить таблицу, в которой мы будем сохранять ссылки на приложения. Для этого мы воспользуемся инструментом командной строки Artisan, который поставляется с Laravel «из коробки». В результате вы сможете легко уничтожать и восстанавливать таблицы БД, используя только команды artisan.
Прежде всего убедитесь, что вы находитесь в корневом каталоге приложения и что среда разработки Docker Compose запущена:
landing-laravel
docker-compose up -d
Вы получите:
landing-laravel_app_1 is up-to-date
landing-laravel_nginx_1 is up-to-date
landing-laravel_db_1 is up-to-date
Затем создайте миграцию, чтобы настроить таблицу links. Миграция Laravel работает, по сути, как система контроля версий схемы БД, что позволяет разработчикам создавать, обновлять и уничтожать таблицы любое необходимое количество раз.
Чтобы создать новую миграцию, можно запустить команду make:migration, которая загрузит в папку database/migrations новый класс приложения Laravel. Этот класс будет содержать стандартный код.
Для запуска команд в контейнере сервиса app, где установлен PHP, используйте:
docker-compose exec app php artisan make:migration create_links_table
Created Migration: 2020_11_18_165241_create_links_table
Обратите внимание, что имя миграции создается на основе текущей даты, времени и имени, которое предоставлено в качестве аргумента команды make:migration. По этой причине имя вашего файла миграции, очевидно, будет отличаться.
Откройте сгенерированный класс миграции с помощью редактора:
nano database/migrations/2020_11_18_165241_create_links_table
Затем обновите метод up, включив в него столбцы таблицы, в которых будут храниться данные приложения.
Замените текущее содержимое класса миграции следующим кодом. Строки, которые необходимо добавить, выделены красным; если хотите, вы можете скопировать только эти выделенные строки и включить их в определение Schema::create.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateLinksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('links', function (Blueprint $table) {
$table->id();
$table->string('url', 200);
$table->text('description');
$table->boolean('enabled')->default(true);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('links');
}
}
Таким образом, к стандартным полям, которые включены в определение таблицы и автоматически создаются с помощью команды Artisan, вы добавляете три новых поля:
- url: строковое поле для хранения URL-адреса ссылки.
- description: текстовое поле для описания ссылки.
- enabled: поле для состояния ссылки (независимо от того, активна она или нет). Тип boolean будет генерировать беззнаковое поле tinyint для хранения значения 0 или 1.
Сохраните файл миграции, когда закончите редактировать его. Затем запустите миграцию с помощью команды:
docker-compose exec app php artisan migrate
Вы должны получить следующее:
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (152.46ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (131.12ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (101.06ms)
Migrating: 2020_11_18_165241_create_links_table
Migrated: 2020_11_18_165241_create_links_table (60.20ms)
Обратите внимание, вместе с create_links_table также были выполнены другие миграции. Это связано с тем, что стандартная установка Laravel включает миграции для пользователей (таблицы users и password_resets) и для задач в очереди (таблица failed_jobs). Поскольку наше тестовое приложение не использует эти функции, их можно спокойно удалить прямо сейчас. Однако, если вы работаете над собственным приложением и планируете его дальнейшую разработку, рекомендуем вы оставить их. Все файлы миграций находятся в корневой папке приложения, database/migrations.
Читайте также: Настройка абстрактной базы данных в Laravel с помощью миграций и сидеров
В следующей части этой серии мы расскажем, как создать собственную команду Artisan для отображения, вставки и удаления записей в таблице links.
Tags: Docker Compose, Laravel, Laravel+PHP+Docker Compose, PHP