Rumah >pembangunan bahagian belakang >tutorial php >Cara menjana data dengan mudah dengan Pangkalan Data Seeder dalam Laravel
Apabila membina aplikasi, sama ada kecil, sederhana atau besar. Mempunyai data ujian untuk dimainkan dalam aplikasi adalah tidak dapat dielakkan dan penting.
Jadi mari kita mulakan daripada mudah kepada lanjutan dengan dua senario berbeza.
i. Semua aplikasi atau kebanyakan aplikasi harus mempunyai pengguna. Kadangkala, kami ingin mengklasifikasikan/menag pengguna sebagai Pentadbir atau Pengguna biasa. Jadi mari kita hasilkan seeder mudah dengan 100 pengguna dengan spesifikasi jadual yang tersenarai di bawah:
Jadi begini.
Untuk menyemai ke dalam jadual pengguna, sudah tentu, anda akan mempunyai jadual migrasi pengguna lalai yang dibuat untuk anda oleh Laravel.
Jadi demi demonstrasi ini, penghijrahan jadual anda sepatutnya kelihatan seperti ini:
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(); }); }
Untuk mencipta kelas seeder untuk Jadual Pengguna kami.
php artisan make:seeder UserSeeder
Jadi, untuk mencipta nilai bagi seeder yang baru kami buat, kami perlu menggunakan pakej Faker lalai yang disertakan dengan setiap aplikasi Laravel.
Untuk menjana 100 pengguna sekaligus, kami mula-mula melakukan gelung untuk dan menghantar data palsu/pseudo ke dalam setiap lajur seperti ini:
use Faker\Factory as Faker; public function run() { $faker = Faker::create(); for(i = 0; i <= 99; i++) { User::create([ 'first_name' => $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']) ]); } }
Untuk memasukkan ini ke dalam pangkalan data, kita perlu menjalankan arahan di bawah:
php artisan db:seed --class=UserSeeder
Ini akan mencipta 100 pengguna dan memasukkan mereka ke dalam pangkalan data.
Semudah itu.
Jadi sekarang, kepada penyelesaian yang lebih maju.
Kita perlu mencipta:
Kita sudah tahu bagaimana rupa jadual pengguna mari kita lihat bagaimana rupa meja kakitangan dan jabatan.
Meja kakitangan
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(); });
Meja jabatan:
Schema::create('departments', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); });
Jadi kami perlu menjalankan migrasi untuk mempunyai jadual ini dalam pangkalan data kami.
Sekarang, untuk kelas UserSeeder, kami akan melaksanakan titik tumpu yang dinyatakan sebelum ini.
$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 <= 9; $j++){ Department::create([ 'name' => $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count++; }
Dua titik peluru terakhir perlu dilaksanakan bersama
if ($count == 10) { // we need to make sure we have all 10 departments $departments = Department::pluck('id')->toArray(); for ($i=0; $i <= 99; $i++) { $user = User::create([ 'first_name' => $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 ]); } }
Penjelasan:
Kami mencipta 10 jabatan dahulu.
Kemudian kami menyediakan kaunter untuk menyemak sama ada kesemua 10 jabatan telah diwujudkan.
Jika syarat kaunter adalah benar, kami kemudiannya mencipta 100 pengguna.
Untuk setiap 100 pengguna ini, kami perlu merujuk butiran mereka dalam jadual lain yang dipanggil jadual kakitangan.
Setiap kakitangan mestilah milik pengguna dan juga mesti tergolong dalam jabatan, jadi untuk melakukan ini, kita perlu mendapatkan semua jabatan yang kita buat sebelum ini dan menyuntiknya ke dalam ruangan jabatan_id secara rawak.
Pelaksanaan UserSeeder penuh
$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 <= 9; $j++){ Department::create([ 'name' => $departmentNames[$j], 'created_at' => $now, 'updated_at' => $now, ]); $count++; } $faker = Faker::create(); if ($count == 10) { $departments = Department::pluck('id')->toArray(); for ($i=0; $i <= 99; $i++) { $user = User::create([ 'first_name' => $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 ]); } }
Kemudian jalankan:
php artisan make:seeder --class=UserSeeder
Jika anda mempunyai soalan, jangan teragak-agak untuk melepaskannya. Selamat mengekod!
Atas ialah kandungan terperinci Cara menjana data dengan mudah dengan Pangkalan Data Seeder dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!