0

我对 Laravel 中的工厂有点困惑。

所有谈论的工厂都是创建虚拟对象的能力,因此您可以进行测试,或者只是快速为您的测试生成虚拟对象。

您通常使用Fakerhelper 来获取随机数据。

现在,我有另一个需要工厂的常见用例,它是对象创建。

因此,例如,在TreeController@store中,我有一个静态方法来创建/更新设置:

    $championship->settings =  ChampionshipSettings::createOrUpdate($request, $championship);

public static function createOrUpdate(Request $request, Championship $championship): ChampionshipSettings
{
    $request->request->add(['championship_id' => $championship->id]);
    $arrSettings = $request->except('_token', 'numFighters');
    $settings = static::where(['championship_id' => $championship->id])->first();
    if ($settings == null) {
        $settings = new self();
    }
    $settings->fill($arrSettings);

    $settings->save();

    return $settings;
}

我想我会使用工厂来管理对象创建,但我不能,因为我已经将它们用于虚拟内容。

此外,我可以在我的工厂中使用不同的案例,但它开始增加我认为可以避免的复杂性。

然后,我可以使用现有的工厂,但如果我不指定属性,它会生成一个随机的,所以我需要在创建之前将所有未使用的属性设置为 null ...

嗯,我有点困惑我应该如何管理我的工厂......

4

0 回答 0