我对 Laravel 中的工厂有点困惑。
所有谈论的工厂都是创建虚拟对象的能力,因此您可以进行测试,或者只是快速为您的测试生成虚拟对象。
您通常使用Faker
helper 来获取随机数据。
现在,我有另一个需要工厂的常见用例,它是对象创建。
因此,例如,在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 ...
嗯,我有点困惑我应该如何管理我的工厂......