РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1275 of 1392 menu

Команда db:seed

Команда db:seed запускает механизм наполнения базы данных через seed-классы. Она может выполняться как для всех сидов, так и для одного конкретного класса с помощью опции --class. По умолчанию команда запускает класс DatabaseSeeder, который обычно используется как точка входа для вызова остальных сидов. При использовании опции --force команда выполняется в продакшн-окружении без подтверждения.

Синтаксис

php artisan db:seed php artisan db:seed --class=UsersTableSeeder php artisan db:seed --force

Пример

Выполним команду для запуска всех сидов, определенных в методе run класса DatabaseSeeder:

<?php namespace DatabaseSeeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; class DatabaseSeeder extends Seeder { public function run(): void { DB::table('users')->insert([ 'name' => 'Admin', 'email' => 'admin@example.com', 'password' => Hash::make('password'), ]); } } ?>

Запуск команды:

php artisan db:seed

Результат выполнения кода:

"Database seeding completed successfully."

В результате в таблице users появится одна запись с данными администратора.

Пример

Рассмотрим случай, когда нужно выполнить только один конкретный сид для таблицы категорий:

<?php namespace DatabaseSeeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; class CategorySeeder extends Seeder { public function run(): void { $categories = ['Technology', 'Science', 'Art', 'Sports']; foreach ($categories as $category) { DB::table('categories')->insert([ 'name' => $category, 'created_at' => now(), 'updated_at' => now(), ]); } } } ?>

Команда для запуска только этого сида:

php artisan db:seed --class=CategorySeeder

Результат выполнения кода:

"Database seeding completed successfully."

После выполнения в таблице categories появятся четыре записи с названиями категорий.

Пример

Используем сиды с фабриками для генерации множества тестовых записей. Создадим 10 пользователей и для каждого по 3 статьи:

<?php namespace DatabaseSeeders; use Illuminate\Database\Seeder; use App\Models\User; use App\Models\Article; class DatabaseSeeder extends Seeder { public function run(): void { User::factory() ->count(10) ->has(Article::factory()->count(3)) ->create(); } } ?>

Запуск команды с отключением проверки внешних ключей для продакшн-окружения:

php artisan db:seed --force

Результат выполнения кода:

"Database seeding completed successfully. Seeded: 10 users, 30 articles."

Команда создаст 10 пользователей и для каждого по 3 статьи, всего 40 записей в базе данных.

Пример

Выполним команду с использованием файла сидов, который вызывает другие сиды для комплексного наполнения:

<?php namespace DatabaseSeeders; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder { public function run(): void { $this->call([ UserSeeder::class, CategorySeeder::class, ArticleSeeder::class, CommentSeeder::class, ]); } } ?>

Команда для запуска:

php artisan db:seed

Результат выполнения кода:

"Seeding: UserSeeder" "Seeding: CategorySeeder" "Seeding: ArticleSeeder" "Seeding: CommentSeeder" "Database seeding completed successfully."

Этот подход позволяет структурировать наполнение базы, разделяя логику по разным классам.

Смотрите также

  • команда make:seeder,
    которая создает новый класс сидера
  • команда migrate,
    которая выполняет миграции и создает структуру таблиц
  • команда migrate:fresh,
    которая удаляет все таблицы и выполняет миграции заново
  • команда make:factory,
    которая создает фабрику для генерации тестовых данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить