ORM是全有还是全无?

jbl*_*lue 8 php orm symfony1 zend-framework

如果我使用ORM,请与Zend或Symfony说.这是一个全有或全无的交易?

我想使用ORM,但也希望在某些情况下优化性能并自己编写查询以获得细节.因此,如果我开始使用ORM,一旦将其包含在我的项目中,是否难以以旧的方式进行操作?

Jer*_*man 6

使用Doctrine很容易"突破"ORM.Doctrine允许您以4种不同的方式编写查询:

  • DQL.Doctrine自己的查询语言,带有Doctrine的所有好处.
  • "raw"DQL(Doctrine2中的"本机查询").这与DQL类似,但允许在命令(例如,数据库特定功能)方面具有更大的灵活性.在此模式下,您必须更多地指定组件如何相互关联.
  • SQL,使用PHP的PDO.您可以使用Doctrine_Connection获取PDO实例,该实例允许您编写查询,但仍具有PDO授予的额外安全性和易用性.
  • 原始SQL.虽然我不确定你为什么要这样做,但我认为Doctrine提供了这个,如果没有,你可以完全打破Doctrine.

如果您在Symfony中使用Doctrine,那么Symfony绝对没有任何功能可以锁定您使用Doctrine,即使它已启用.

最后一个警告:如果您正在使用Doctrine的某些高级功能(例如事件或行为),那么当您在DQL之外进行查询时,这些功能将变得很难.