流明从给定数组的faker生成假数据

时间:2018-03-29 10:40:39

标签: php laravel lumen faker

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

我的档案在下面,

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',
            ]);
        }
    }
}

从上面的代码中,它将生成10个admin角色记录。

我希望生成来自[' admin',' superadmin','客户'代理',& #39;工程师']

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

1 个答案:

答案 0 :(得分:0)

你可以使用faker的方法randomElement($array)来完成这样的工作:

<?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',
                ]),
            ]);
        }
    }
}

对于可重用性,我建议使用模型工厂,而不是直接在播种机中创建模型。你可以阅读in the documentation