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

时间:2018-12-20 11:18:17

标签: php laravel design-patterns repository factory

让我们假设我有与模型Image,Card等相关的User模型。这意味着当我创建新用户时,我应该与其一起创建Image和Card实例,例如我的控制器的存储方法中有类似的内容:

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');
}

对于两个以上的相关模型,控制器中的代码太多,那么对于将代码放置在何处以获得更好的可伸缩性,是否有任何想法或建议?

1 个答案:

答案 0 :(得分:1)

我会选择“工厂”。使用此模式,您可以轻松创建新对象以及所需的任何对象。您只需要将正确的参数传递给您的服务即可。

检查这些文档以在SYmfony中创建Factory模式 https://symfony.com/doc/current/service_container/factories.html