php - Faker 和 Laravel 5

标签 php laravel laravel-5 faker

我想知道是否有人知道执行此任务的方法。我想尝试告诉插入的用户每种类型的角色有多少。这样我就可以让它说我只想要角色号 4 的其他 1 个和角色号 3 的 2 个,其余的就是一个。我确定会有一些额外的逻辑,但不确定应该如何编写这样的内容。

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

    }

}

最佳答案

您可以尝试对特定数量的 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)
            ]);
        }

    }

}

关于php - Faker 和 Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29448404/

相关文章:

javascript - 在网站中处理 SQL 响应的位置

php - MySQL 数据库/PHP - 从脚本生成 100 个联系人

php - 在 Laravel 5.7 中验证表单中的输入数组

image - 如何使用 laravel 图像将高分辨率图像更改为低分辨率?

Laravel:使用相关模型的范围来过滤结果

Php 变量没有传递到 whereHas 函数 - Laravel Eloquent

javascript - Laravel - 消息 Toastr,错误或无效输入字段

php - 使用 PHP 创建单个文件上传表单的最佳方法是什么?

php - 在触发器内部使用 select 语句

laravel - 当 TTR 耗尽时,QueueWorker 会发生什么?