在配置了DBAL的Symfony项目中重新放置存储库


Repositories reeplacement in a Symfony project configured with DBAL

我在Symfony 3.0.1中的一个项目中工作,该项目使用五个带有DBAL的数据库作为数据访问层。我一直在Symfony使用ORM,我一直使用下一个MVC模型:

数据访问:

CONTROLLER->REPOSTORY(此处为查询)->ENTITY

显示结果:

控制器->渲染($view,$params)->查看

这个模型允许使用简短的控制器,但现在我使用DBAL,所以我不能使用存储库。

问题是:

如何使用DBAL实现类似的模型?换句话说,我应该把查询放在哪里?

我应该使用服务而不是存储库吗?

注意:我只在该数据库中使用select语句。

提前感谢!

使用实体不需要ORM
同样,一旦存储库是设计模式的实现,您就不需要Doctrine来构建存储库:

存储库

使用用于访问域对象的类集合接口。阅读更多

即使您不能使用Doctrine ORM,您仍然可以针对抽象模型类或/和模型接口来设计POPO类
您可以通过构造或setter方法为每个模型/实体注入DBALConnection对象。创建回购类后很容易。返回集合对象、水合项目或使用原始数组取决于您。

编辑#1

我添加了一个我过去(几年前)使用过的真实世界示例,看:

https://github.com/felipsmartins/misc-and-code-snippets/tree/master/php/model-exemple/src/AppBundle/Model

编辑#2

关于服务,如果在一个协调整个事务的服务中有专门的、定义良好的模型(而不是贫血模型)一起工作会更好,在这种情况下,它将是我们所知道的工作单元(请参阅工作单元模式)