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

Метод run

Метод run определён в классе Seeder и предназначен для выполнения логики наполнения базы данных. В этом методе вы можете использовать фабрики и другие сидеры для создания тестовых записей. Метод вызывается командой php artisan db:seed или при запуске миграций с флагом --seed. Название метода зарезервировано, переопределять его нельзя.

Метод не принимает параметров и не возвращает значений. Вся логика создания записей размещается непосредственно в теле метода.

Синтаксис

<?php namespace DatabaseSeeders; use IlluminateDatabaseSeeder; use AppModelsUser; class DatabaseSeeder extends Seeder { public function run(): void { // Логика заполнения } } ?>

Пример

Создадим сидер для заполнения таблицы пользователей с использованием фабрики:

<?php namespace DatabaseSeeders; use IlluminateDatabaseSeeder; use AppModelsUser; use IlluminateSupportFacadesHash; class UserSeeder extends Seeder { public function run(): void { User::create([ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => Hash::make('password123'), ]); User::create([ 'name' => 'Jane Smith', 'email' => 'jane@example.com', 'password' => Hash::make('secret456'), ]); } } ?>

Пример

Заполним базу данных с помощью фабрики, создающей множество записей:

<?php namespace DatabaseSeeders; use IlluminateDatabaseSeeder; use AppModelsPost; use AppModelsUser; class PostSeeder extends Seeder { public function run(): void { $user = User::first(); if ($user) { Post::factory(10)->create([ 'user_id' => $user->id, ]); } } } ?>

Пример

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

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

Пример

Использование фабрики для создания связанных записей с состоянием:

<?php namespace DatabaseSeeders; use IlluminateDatabaseSeeder; use AppModelsOrder; use AppModelsProduct; class OrderSeeder extends Seeder { public function run(): void { $products = Product::factory(5)->create(); Order::factory(3)->create()->each(function ($order) use ($products) { $order->products()->attach( $products->random(2)->pluck('id')->toArray() ); }); } } ?>

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

  • класс Seeder,
    который определяет структуру сидера
  • метод create,
    который создаёт и сохраняет новую модель
  • метод save,
    который сохраняет модель в базу данных
  • метод table,
    который позволяет работать с таблицей через Query Builder
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить