На пятом уроке мы разберем одну из возможностей Laravel, это работу с базами данных через миграции и сидеры. Если вы только начинаете свой путь в веб-разработке, этот урок станет вашим надежным проводником. Мы научимся настраивать подключение к БД, создавать миграции, управлять ими и наполнять таблицы тестовыми данными.
Настройка подключения к БД
Перед началом работы с базой данных в Laravel нужно правильно настроить подключение. Для этого используется файл .env
, расположенный в корне проекта. Этот файл содержит конфигурации окружения, включая параметры БД.
Шаг 1: Открываем файл .env
Найдите в проекте файл .env
. Он выглядит примерно так:
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=root DB_PASSWORD=
Шаг 2: Настраиваем параметры
- DB_CONNECTION — тип СУБД (mysql, pgsql, sqlite).
- DB_HOST — адрес сервера (обычно
127.0.0.1
для локальной разработки). - DB_PORT — порт (для MySQL — 3306).
- DB_DATABASE — имя вашей базы данных.
- DB_USERNAME и DB_PASSWORD — логин и пароль для доступа.
Пример для SQLite:
Если вы хотите использовать SQLite, удалите другие DB-параметры и укажите:
DB_CONNECTION=sqlite # Уберите комментарий с этой строки: # DB_DATABASE=database/database.sqlite
Создайте файл database/database.sqlite
и запустите php artisan migrate
.
Проверка подключения
Чтобы убедиться, что всё работает, выполните:
php artisan db:show
Если видите список таблиц — подключение успешно!
Создание и редактирование миграций
Миграции это «версионирование» структуры базы данных. Они позволяют легко создавать, изменять и откатывать таблицы.
Генерация миграции
Создайте миграцию для таблицы posts
:
php artisan make:migration create_posts_table
Файл появится в папке database/migrations
. Откройте его.
Структура миграции
В методе up()
описываем создание таблицы, в down()
— её удаление:
public function up(): void { Schema::create('posts', function (Blueprint $table) { $table->id(); // Автоинкрементный первичный ключ $table->string('title'); // Строка (VARCHAR) $table->text('content'); // Текст (TEXT) $table->timestamps(); // created_at и updated_at }); } public function down(): void { Schema::dropIfExists('posts'); }
Добавление полей
Допустим, мы хотим добавить колонку author_id
. Создайте новую миграцию:
php artisan make:migration add_author_id_to_posts_table
В методе up()
:
public function up(): void { Schema::table('posts', function (Blueprint $table) { $table->foreignId('author_id')->constrained('users'); }); }
Метод constrained('users')
автоматически создаст внешний ключ на таблицу users
.
Запуск миграций и откат
Запуск всех миграций
php artisan migrate
Laravel выполнит все миграции, которые ещё не были применены.
Откат последней миграции
php artisan migrate:rollback
Это отменит последний пакет миграций (обычно последний migrate
).
Полный сброс
php artisan migrate:reset
Удалит все таблицы. Используйте осторожно!
Наполнение таблиц через Seeders
Сидеры (Seeders) позволяют заполнить базу тестовыми данными.
Создание сидера
php artisan make:seeder PostSeeder
Откройте файл database/seeders/PostSeeder.php
:
public function run(): void { DB::table('posts')->insert([ 'title' => 'Мой первый пост', 'content' => 'Это содержимое поста...', 'author_id' => 1, 'created_at' => now(), 'updated_at' => now(), ]); }
Использование фабрик
Для генерации большого количества данных удобно использовать фабрики. Создайте фабрику для модели Post
:
php artisan make:factory PostFactory --model=Post
Пример PostFactory.php
:
public function definition(): array { return [ 'title' => fake()->sentence(), 'content' => fake()->text(500), 'author_id' => User::inRandomOrder()->first()->id, ]; }
Теперь в сидере можно вызвать:
Post::factory()->count(50)->create();
Запуск сидеров
php artisan db:seed --class=PostSeeder
Или через DatabaseSeeder
:
public function run(): void { $this->call([ PostSeeder::class, ]); }
И выполните:
php artisan db:seed
Практические задачи
- Настройте SQLite:
- Создайте файл
database/database.sqlite
. - Измените
.env
для работы с SQLite. - Запустите миграции.
- Создайте файл
- Создайте миграцию для таблицы
comments
:- Поля:
id
,post_id
(внешний ключ),text
,created_at
. - Добавьте индекс для
post_id
.
- Поля:
- Наполните таблицу
comments
через сидер:- Используйте фабрику для генерации 100 комментариев.
- Откатите миграции и запустите заново:
php artisan migrate:fresh --seed
Теперь вы умеете работать с базами данных в Laravel как настоящий профессионал. Миграции и сидеры это мощные инструменты, которые избавят вас от рутины. Если хотите глубже погрузиться в Laravel, присоединяйтесь к моему полному курсу: Laravel для начинающих. Там вас ждут 20 уроков с практикой, поддержкой.