Faker and Laravel 5

3

我正在尝试找出是否有一种方法来执行此任务。我想尝试告诉有多少个每种类型的角色适合插入的用户。这样我就可以让它说我只需要1个其他的第4号角色和2个第3号角色,其余都是一个。我确定还需要一些额外的逻辑,但不确定这样的东西应该如何编写。

<?php

use Illuminate\Database\Seeder;

// Composer: "fzaninotto/faker": "v1.3.0"
use Faker\Factory as Faker;

use App\User;

class UsersTableSeeder extends Seeder {

    public function run()
    {
        // use the factory to create a Faker\Generator instance
        $faker = Faker::create();

        $roleIds = App\Role::lists('id');

        User::create([
            'first_name' => 'Me',
            'last_name' => 'Me',
            'username' => 'me',
            'email' => 'me@gmail.com',
            'password' => 'secret',
            'active' => 1,
            'role_id' => 1
        ]);

        foreach(range(2, 100) as $index) {

            User::create([
                'first_name' => $faker->firstName,
                'last_name' => $faker->lastName,
                'username' => str_replace('.', '_', $faker->unique()->userName),
                'email' => $faker->email,
                'password' => $faker->word,
                'active' => $faker->boolean($chanceOfGettingTrue = 90),
                'role_id' => $faker->randomElement($roleIds)
            ]);
        }

    }

}
1个回答

4

您可以尝试针对特定数量的role_id使用不同的foreach,并根据需要在每个foreach中修复id。

<?php

use Illuminate\Database\Seeder;

// Composer: "fzaninotto/faker": "v1.3.0"
use Faker\Factory as Faker;

use App\User;

class UsersTableSeeder extends Seeder {

    public function run()
    {
        // use the factory to create a Faker\Generator instance
        $faker = Faker::create();

        $roleIds = App\Role::lists('id');

        User::create([
            'first_name' => 'Me',
            'last_name' => 'Me',
            'username' => 'me',
            'email' => 'me@gmail.com',
            'password' => 'secret',
            'active' => 1,
            'role_id' => 1
        ]);

        foreach(range(1, 2) as $index) {

            User::create([
                'first_name' => $faker->firstName,
                'last_name' => $faker->lastName,
                'username' => str_replace('.', '_', $faker->unique()->userName),
                'email' => $faker->email,
                'password' => $faker->word,
                'active' => $faker->boolean($chanceOfGettingTrue = 90),
                'role_id' => 1
            ]);
        }

        foreach(range(1, 3) as $index) {

            User::create([
                'first_name' => $faker->firstName,
                'last_name' => $faker->lastName,
                'username' => str_replace('.', '_', $faker->unique()->userName),
                'email' => $faker->email,
                'password' => $faker->word,
                'active' => $faker->boolean($chanceOfGettingTrue = 90),
                'role_id' => 2
            ]);
        }

        foreach(range(2, 100) as $index) {

            User::create([
                'first_name' => $faker->firstName,
                'last_name' => $faker->lastName,
                'username' => str_replace('.', '_', $faker->unique()->userName),
                'email' => $faker->email,
                'password' => $faker->word,
                'active' => $faker->boolean($chanceOfGettingTrue = 90),
                'role_id' => rand(3,5)
            ]);
        }

    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接