我应该在哪里放置模型创建代码?
Where I should put the model creation code?
假设我有与模型图像、卡片等相关的用户模型。这意味着当我创建一个新用户时,我应该与其一起创建图像和卡片实例,例如我的控制器的存储方法中有这样的东西:
DB::beginTransaction();
try {
$user->saveOrFail();
$imageObj = new Image();
$imageObj->user_id = $user->id;
// set the other fields
$imageObj->saveOrFail();
$cardObj = new Card();
$cardObj->user_id = $user->id;
// set the other fields
$cardObj->saveOrFail();
.......................
DB::commit();
}
return redirect('some');
}
对于2个以上的相关模型,控制器中的代码过多,那么有什么方法可以重构这些代码以获得更好的可扩展性?
我会选择工厂。使用此模式,您可以轻松创建新对象以及您需要的任何东西。您只需要将正确的参数传递给您的服务即可。
查看这些文档以在 SYmfony 中创建工厂模式
https://symfony.com/doc/current/service_container/factories.html
假设我有与模型图像、卡片等相关的用户模型。这意味着当我创建一个新用户时,我应该与其一起创建图像和卡片实例,例如我的控制器的存储方法中有这样的东西:
DB::beginTransaction();
try {
$user->saveOrFail();
$imageObj = new Image();
$imageObj->user_id = $user->id;
// set the other fields
$imageObj->saveOrFail();
$cardObj = new Card();
$cardObj->user_id = $user->id;
// set the other fields
$cardObj->saveOrFail();
.......................
DB::commit();
}
return redirect('some');
}
对于2个以上的相关模型,控制器中的代码过多,那么有什么方法可以重构这些代码以获得更好的可扩展性?
我会选择工厂。使用此模式,您可以轻松创建新对象以及您需要的任何东西。您只需要将正确的参数传递给您的服务即可。
查看这些文档以在 SYmfony 中创建工厂模式 https://symfony.com/doc/current/service_container/factories.html