如何为 Laravel 工厂使用自定义值列表,维护订单并仍在使用 Faker 外观?

Posted

技术标签:

【中文标题】如何为 Laravel 工厂使用自定义值列表,维护订单并仍在使用 Faker 外观?【英文标题】:How to use a custom list of values for a Laravel factory, maintaing order and still using the Faker facade? 【发布时间】:2020-03-23 05:49:07 【问题描述】:

我有一个名称列表 $names = ['Adam','Beth,'Chancie','Dale', 'Edward']; 等。我想在 Laravel 工厂或播种机中使用,我不知道是哪一个。

基本上,我仍然希望将Faker 功能用于其他所有内容,但提供我自己的自定义名称列表按它们在数组中列出的顺序

$factory->define(User::class, function (Faker $faker) 
    return [
        'name' => MY_CUSTOM_LIST_NAME,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];
);

【问题讨论】:

【参考方案1】:

您始终可以创建一个私有方法,当您遍历数组中的每个名称时调用该方法。

$factory->define(User::class, function (Faker $faker) 

    foreach($name in $names) 
        $this->customFakerMethod($name);
        // your logic here ...
    
);

这个函数只是把名字作为参数。

private function customFakerMethod($name)

    return [
        'name' => $name,
        'email' => $faker->unique()->safeEmail,
        'email_verified_at' => now(),
        'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
        'remember_token' => Str::random(10),
    ];


因此您的用户将按照您希望的顺序创建。

【讨论】:

以上是关于如何为 Laravel 工厂使用自定义值列表,维护订单并仍在使用 Faker 外观?的主要内容,如果未能解决你的问题,请参考以下文章

如何为 Laravel 发布和自定义 .htaccess?

Laravel 8 在模型工厂中定义 belongsToMany 定义

使用 PyQT,如何为带有自定义列表的 QComboBox 过滤 mousePressEvent

如何为随机自定义 ListView 适配器设置按钮单击事件?

Laravel 自定义验证规则

如何为空输入(而不是默认的+Inf和-Inf)指定R中Max,Min的自定义返回值?