Al crear una aplicación, ya sea pequeña, mediana o grande. Tener datos de prueba para jugar en una aplicación es inevitable e importante.
Así que comencemos desde lo simple hasta lo avanzado con dos escenarios diferentes.
i. Todas las aplicaciones o la mayoría de las aplicaciones deben tener usuarios. A veces, queremos clasificar/etiquetar a los usuarios como Administrador o Usuarios normales. Entonces, generemos una sembradora simple con 100 usuarios con las especificaciones de la tabla que se enumeran a continuación:
Así que, aquí vamos.
Para incluir en la tabla usuarios, por supuesto, Laravel debería crear la tabla de migración de usuarios predeterminada para usted.
Entonces, para esta demostración, la migración de tu tabla debería verse así:
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(); }); }
Para crear una clase de siembra para nuestra tabla de usuarios.
php artisan make:seeder UserSeeder
Entonces, para crear valores para la sembradora que acabamos de crear, necesitamos usar el paquete Faker predeterminado que viene con cada aplicación Laravel.
Para generar 100 usuarios de una vez, primero hacemos un bucle for y pasamos los datos falsos/pseudo a cada columna de esta manera:
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']) ]); } }
Para inicializar esto en la base de datos, necesitamos ejecutar el siguiente comando:
php artisan db:seed --class=UserSeeder
Esto creará 100 usuarios y los insertará en la base de datos.
Es así de simple.
Ahora pasemos a una solución más avanzada.
Necesitamos crear:
Ya sabemos cómo se verá la tabla de usuarios, veamos cómo se verán las tablas de personal y departamento.
Mesa del personal
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(); });
Tabla de departamentos:
Schema::create('departments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); });
Entonces necesitamos ejecutar la migración para tener estas tablas en nuestra base de datos.
Ahora, para la clase UserSeeder, debemos implementar los puntos indicados anteriormente.
$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 ; }
Los dos últimos puntos deberán implementarse juntos
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 ]); } }
Explicación:
Primero creamos 10 departamentos.
Luego configuramos un contador para verificar si se han creado los 10 departamentos.
Si la condición del contador es verdadera, creamos 100 usuarios.
Para cada uno de estos 100 usuarios, debemos hacer referencia a sus detalles en otra tabla llamada tabla de personal.
Cada personal debe pertenecer a un usuario y también debe pertenecer a un departamento, por lo que para hacer esto, necesitamos obtener todos los departamentos que creamos anteriormente e inyectarlos en la columna depart_id al azar.
La implementación completa de 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 ]); } }
Entonces corre:
php artisan make:seeder --class=UserSeeder
Si tienes preguntas, no dudes en dejarlas. ¡Feliz codificación!
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3