0

我正在学习 Zend Framework (3) ...我安装了 Doctrine 因为我不想编写 sql 查询来更快地学习所有其他东西...。

第一个问题:

所以知道我配置了一个工厂,它将学说实体管理器加载到我的控制器(使用 DI)。

所以让我的实体到我的控制器真的很简单......例如在我的项目控制器 createAction 中,我可以很容易地让我的用户实体在我的项目表单中显示它们(项目 <--> 用户多对多)。

但是我知道我在苦苦挣扎,创建存储库类并将其注入我的控制器而不是学说实体管理器会更好吗,这样我就可以过滤我所有的实体等?

第二个问题:

当我想过滤我的项目(例如按用户)时,我应该在哪里执行此操作...在更简单的苗条项目中,我创建了 Collection 类并将它们注入我的所有实体,然后我在我的集​​合中调用了一个过滤器方法...但是问题是,我只是将数据库中的所有实体加载到集合中。在更大的应用程序中,我认为从数据库加载了很多实体?

第三个问题(结论):

当我想将数据从数据库加载到我的控制器时,这里的最佳实践是什么?

实体管理器加载它?

存储库加载它(存储库从实体管理器加载它)?

从集合中加载它(集合从存储库类加载数据,存储库从实体管理器加载数据)?

我没有想过 Pagination @all ......这就是我接下来要做的......但是有很多问题与我的其他问题相似。(我知道这个有一个zend模块..但不知道它是如何工作的..也学习了这个)

我感谢每一个提示、意义等。

4

1 回答 1

1

这个问题的答案可能都是基于意见的。我会说这完全取决于个人喜好。这里没有最佳实践,这完全取决于您将在控制器中执行的操作。最重要的是,如果需要,您可以轻松地从实体管理器获取存储库:

$userRepository = $entityManager->getRepository('Application\Entity\User');

更常见的可能是UserService围绕您的存储库/实体管理器进行自定义(包装器类),您可以使用您希望与User资源一起使用的自定义方法填充该自定义方法。

我希望这对你有一点帮助......

于 2016-10-17T21:53:32.620 回答