Lumen 使用 faker 从给定数组生成假数据

het*_*hel 3 php faker laravel lumen

我想为具有不同角色的用户生成假数据,

我的文件如下,

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;

class InsertUserSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run() {
        $faker = Faker::create();
        foreach (range(1, 10) as $index) {
            DB::table('user')->insert([
                'name' => $faker->name,
                'email' => $faker->email,
                'role' => 'admin',
            ]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,它将生成 10 条管理员角色的记录。

我想生成具有不同角色的记录 ['admin','superadmin','client','agent','engineer']

如何从给定的角色数组中获取角色的值。

Nam*_*hek 5

randomElement($array)您可以使用faker 的方法来完成这项工作,如下所示:

<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Faker\Factory as Faker;

class InsertUserSeeder extends Seeder {

    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run() {
        $faker = Faker::create();
        foreach (range(1, 10) as $index) {
            DB::table('user')->insert([
                'name' => $faker->name,
                'email' => $faker->email,
                'role' => $faker->randomElement([
                    'admin',
                    'superadmin',
                    'client',
                    'agent',
                    'engineer',
                ]),
            ]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

为了可重用性,我建议使用模型工厂,而不是直接在播种器中创建模型。您可以在文档中阅读它。

  • 当时不允许我,告诉我还剩下 2 薄荷糖,现在完成了:) (2认同)