При создании приложения, будь то маленькое, среднее или большое. Наличие тестовых данных для экспериментов в приложении неизбежно и важно.
Итак, давайте начнем от простого к более сложному и рассмотрим два разных сценария.
я. У всех приложений или большинства приложений должны быть пользователи. Иногда мы хотим классифицировать/помечать пользователей как Администраторы или обычные Пользователи. Итак, давайте создадим простую сеялку со 100 пользователями с указанными ниже спецификациями таблицы:
Итак, начнём.
Чтобы заполнить таблицу users, конечно, вам понадобится таблица миграции пользователей по умолчанию, созданная для вас Laravel.
Итак, для этой демонстрации миграция вашей таблицы должна выглядеть так:
public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('first_name'); $table->string('last_name'); $table->string('email'); $table->string('password'); $table->enum('user_type', ['user','admin'])->default('user'); $table->rememberToken(); $table->timestamps(); }); }
Чтобы создать класс раздачи для нашей таблицы пользователей.
php artisan make:seeder UserSeeder
Итак, чтобы создать значения для только что созданной системы раздачи, нам нужно использовать пакет Faker по умолчанию, который поставляется с каждым приложением Laravel.
Чтобы создать 100 пользователей за раз, мы сначала выполняем цикл for и передаем поддельные/псевдоданные в каждый столбец следующим образом:
use Faker\Factory as Faker; public function run() { $faker = Faker::create(); for(i = 0; i $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), // we might want to set this to a value we can easily remember for testing sake 'user_type' => $faker->randomElement(['admin', 'user']) ]); } }
Чтобы внести это в базу данных, нам нужно запустить команду ниже:
php artisan db:seed --class=UserSeeder
Это создаст 100 пользователей и вставит их в базу данных.
Это так просто.
Итак, переходим к более продвинутому решению.
Нам нужно создать:
Мы уже знаем, как будет выглядеть таблица пользователей, давайте посмотрим, как будут выглядеть таблицы сотрудников и отделов.
Таблица персонала
Schema::create('staff', function (Blueprint $table) { $table->id(); $table->string('first_name'); $table->string('last_name'); $table->string('email'); $table->foreignId('department_id')->references('id')->on('departments'); $table->foreignId('user_id')->references('id')->on('users'); $table->timestamps(); });
Таблица отделов:
Schema::create('departments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); });
Поэтому нам нужно запустить миграцию, чтобы эти таблицы были в нашей базе данных.
Теперь для класса UserSeeder мы должны реализовать пункты, изложенные ранее.
$now = now(); $count = 0; $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories', 'Books', 'Music', 'Movies & TV', 'Grocery' ]; for ($j=0; $j $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count ; }
Последние два пункта необходимо реализовать вместе
if ($count == 10) { // we need to make sure we have all 10 departments $departments = Department::pluck('id')->toArray(); for ($i=0; $i $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), 'user_type' => $faker->randomElement(['admin', 'user']), 'created_at' => $now, 'updated_at' => $now ]); Staff::create([ 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'user_id' => $user->id, 'department_id' => $faker->randomElement($departments), // pick random departments from DB 'created_at' => $now, 'updated_at' => $now ]); } }
Объяснение:
Сначала мы создали 10 отделов.
Затем мы настраиваем счетчик, чтобы проверить, все ли 10 отделов созданы.
Если условие счетчика истинно, мы создаем 100 пользователей.
Для каждого из этих 100 пользователей нам необходимо сослаться на их данные в другой таблице, называемой таблицей персонала.
Каждый сотрудник должен принадлежать пользователю, а также отделу, поэтому для этого нам нужно получить все отделы, которые мы создали ранее, и вставить их в столбец Department_id случайным образом.
Полная реализация UserSeeder
$now = now(); $count = 0; $departmentNames = ['Electronics', 'Home & Garden', 'Toys & Games', 'Health & Beauty', 'Automotive', 'Sports & Outdoors','Clothing & Accessories', 'Books', 'Music', 'Movies & TV', 'Grocery' ]; for ($j=0; $j $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count ; } $faker = Faker::create(); if ($count == 10) { $departments = Department::pluck('id')->toArray(); for ($i=0; $i $faker->firstName(), 'last_name' => $faker->lastName(), 'email' => $faker->email(), 'password' => bcrypt('hello1234'), 'user_type' => $faker->randomElement(['admin', 'user']), 'created_at' => $now, 'updated_at' => $now ]); Staff::create([ 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'user_id' => $user->id, 'department_id' => $faker->randomElement($departments), // pick random departments from DB 'created_at' => $now, 'updated_at' => $now ]); } }
Затем запустите:
php artisan make:seeder --class=UserSeeder
Если у вас есть вопросы, не стесняйтесь задавать их. Приятного кодирования!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3