我应该在哪里放置模型创建代码?

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