【问题标题】:Matching factory values in Laravel 7在 Laravel 7 中匹配工厂值
【发布时间】:2020-08-25 19:47:21
【问题描述】:

下午好,

我正在尝试创建一个 Laravel 工厂,其中 2 个“列”在每次调用时都具有相同的值,而工厂的其余部分可以是随机的。

例如,我的数据库中有以下列

name
email
phone_number
status_message
status_code

我目前的工厂如下;

$factory->define(Brand::class, function (Faker $faker) {
    return [
        'name' => $faker->unique()->company,
        'email' => $faker->companyEmail,
        'phone_number' => $faker->phoneNumber
    ];
});

这部分工作得很好,问题在于每个特定的状态消息都带有一个单独的状态代码。有没有办法可以添加带有状态代码的状态消息数组,并让工厂为该记录随机选择一组?

下面以数组格式列出状态码/消息;

[
   '3e2s' => 'tangled web',
   '29d7' => 'get certified',
   '2r5g' => 'art of war',
]

我希望这是有道理的。任何帮助将不胜感激。

【问题讨论】:

  • 如果您是随机选择记录,这与每次都具有相同值的 2 个字段有何相同?
  • @KamleshPaul - 这只是 HTTP 状态代码的列表
  • @lagbox 2 个字段需要匹配,即如果状态码是 3e2s,则状态消息必须是 'tangled web'

标签: php laravel faker


【解决方案1】:

据我所知,你需要从上面提到的这个数组中随机选择

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

    $data = [
        '3e2s' => 'tangled web',
        '29d7' => 'get certified',
        '2r5g' => 'art of war',
    ];

    $statusCode = array_rand($data);
    $statusMessage = $data[$statusCode];
    return [
        'name' => $faker->unique()->company,
        'email' => $faker->companyEmail,
        'phone_number' => $faker->phoneNumber,
        'status_message' => $statusMessage,
        'status_code' => $statusCode,

    ];
});

【讨论】:

    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 2020-11-20
    • 2020-07-08
    • 2020-10-10
    • 2017-05-29
    • 1970-01-01
    • 2018-04-21
    • 2019-01-26
    相关资源
    最近更新 更多