如何在Symfony2中构建模型并使用Doctrine

时间:2016-12-09 11:40:01

标签: symfony doctrine

我正在切换到Symfony我正在开发的项目,但是我需要一些关于如何在模型和使用原则时构建文件的建议。

我有一个我使用的自定义框架,它反过来使用MVC模型。几乎所有的MYSQL数据库查询都存储在模型中,我通过控制器访问它们。

现在看完Symfony2后,我的解释是Symfony中的“模型”文件称为Servies。它是否正确?

我还生成了许多与我的MYSQL数据库对应的实体。我的问题是我将自定义Doctrine查询放在服务文件中还是在Entity文件中创建?

我有点不确定如何构建它。

由于

2 个答案:

答案 0 :(得分:4)

  

几乎所有的MYSQL数据库查询都存储在模型中

那很糟糕,但我稍后会提到它。

  

现在看完Symfony2之后,我的解释是"模型" Symfony中的文件称为Servies。它是否正确?

查询应该在存储库中完成,或者在某些情况下在服务中完成。 如果您的查询返回实体,那么它应该是存储库。

  

我的问题是我将自定义Doctrine查询放在Service文件中还是在Entity文件中创建?

实体应该是纯PHP对象。他们不应该依赖任何东西而不是其他实体。实体实际上对数据库一无所知。它是纯面向对象的业务逻辑。

同样,所有数据库查询都应该在存储库或服务中。

我建议首先阅读Symfony Book,了解" Symfony方式" 的工作原理。

答案 1 :(得分:1)

Symfony是not MVC框架:

  

Symfony2实际上是为Controller部分提供工具,View部分,而不是Model部分[...] Symfony2是一个HTTP框架;它是一个请求/响应框架。

这很棒。 Symfony允许您按照自己的意愿制作模型,不受任何限制。 Doctrine(ORM和/或DBAL)是一组独立的库。您可以使用任何其他库,或构建自己的持久层抽象,或通过PDO / MySQLi /等使用本机SQL。

服务只是在容器中注册并具有一些依赖关系的对象。服务可以做任何事情。它们可以代表您的模型,但不是必需的。