【问题标题】:Using default factory property value for other properties within a factory对工厂内的其他属性使用默认工厂属性值
【发布时间】:2020-07-18 09:25:24
【问题描述】:

假设我使用工厂创建具有 2 个属性的模型:

$factory->define(MyModel::class, function (Faker $faker) {
    return [
        'property1' => $faker->numberBetween(1,10),
        'property2' => $faker->numberBetween(1,10)
    ]
}

如果我设置 property1 的值:factory('App\MyModel')->create(['property1' => 5]),但也想使用该值来计算 property2 的值​​(对于例子有property2等于property1 + 10),我如何在工厂内部访问它?

【问题讨论】:

    标签: laravel factory faker


    【解决方案1】:

    尝试这样的方式来访问之前的属性,

    $factory->define(MyModel::class, function (Faker $faker) {
        $property1 = $faker->numberBetween(1,10);
        return [
            'property1' => $property1,
            'property2' => $faker->numberBetween(1,10) + $property1
        ]
    }
    

    【讨论】:

    • 在张贴在这里之前尝试过哈立德。问题是如果我通过create()方法设置property1,新创建的模型会用这个值实例化,但是property2会使用工厂内部设置的随机$property1值。
    • @LiamArbel 因为你可以使用最后插入的项目值而不是伪造者的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多