"Основы баз данных в Laravel: создание миграций и таблиц"
Laravel предоставляет мощную систему работы с базами данных. С помощью migrations можно управлять структурой БД как кодом, а Eloquent ORM значительно упрощает взаимодействие с таблицами.
В этой статье разберём:
- как работает Laravel database;
- настройку MySQL и PostgreSQL;
- создание migration;
- создание таблиц;
- rollback миграций;
- schema builder.
Настройка базы данных Laravel
Laravel поддерживает:
- MySQL;
- PostgreSQL;
- SQLite;
- SQL Server.
Настройки находятся в .env.
Laravel MySQL
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
Laravel PostgreSQL
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=postgres
DB_PASSWORD=secret
Что такое Laravel Migration
Migration — это система версионирования структуры базы данных.
Laravel migration позволяет:
- создавать таблицы;
- изменять колонки;
- удалять поля;
- синхронизировать структуру БД между разработчиками.
Создание Migration
Команда:
php artisan make:migration create_posts_table
Laravel создаст файл в:
database/migrations
Создание таблицы
Пример migration:
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
Типы колонок в Laravel
Наиболее популярные:
$table->string('name');
$table->text('description');
$table->integer('views');
$table->boolean('is_active');
$table->json('settings');
$table->timestamp('published_at');
Запуск Migration
php artisan migrate
Rollback Migration
Отмена последней migration:
php artisan migrate:rollback
Полный сброс БД
php artisan migrate:fresh
или:
php artisan migrate:fresh --seed
Изменение таблиц
Создание migration:
php artisan make:migration add_slug_to_posts_table
Добавление колонки
Schema::table('posts', function (Blueprint $table) {
$table->string('slug');
});
Удаление колонки
$table->dropColumn('slug');
Foreign Keys
Laravel поддерживает внешние ключи.
$table->foreignId('user_id')
->constrained()
->onDelete('cascade');
Лучшие практики Migration
Рекомендуется:
- хранить структуру БД только через migration;
- использовать foreign keys;
- не редактировать старые migration в production;
- разделять schema changes на небольшие migration.
Laravel Database и production
Для production рекомендуется:
- использовать индексы;
- оптимизировать запросы;
- избегать лишних nullable полей;
- правильно проектировать связи.
Итоги
Laravel migrations — фундамент работы с базой данных в Laravel.
С их помощью можно:
- управлять schema;
- автоматизировать развёртывание;
- поддерживать структуру БД;
- удобно работать с MySQL и PostgreSQL.
Это обязательный инструмент для любого Laravel-разработчика.