Создание таблиц Laravel с помощью миграций

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: , , ,

Добавить комментарий