Laravel工厂/设计模式技术

时间:2017-05-24 00:33:08

标签: php laravel factories

我对Laravel的工厂有点困惑。

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

您通常使用Faker帮助程序来获取随机数据。

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

因此,例如,在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;
}

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

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

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

好吧,我对如何管理工厂感到困惑......

0 个答案:

没有答案