orm - 对于 Doctrine ORM,为什么除了 PDO 还需要 DBAL?

标签 orm pdo doctrine-orm

我使用 Doctrine 2 ORM 已经有一段时间了,有些东西我一直不太明白。

Doctrine DBAL(数据库抽象层)的用途是什么? PDO本身就是一个数据库抽象层,那么为什么ORM不能直接和PDO一起工作呢?

我不想找到使用 DBAL 或任何东西的方法。我一直不明白为什么需要额外的层,并且似乎无法在文档中找到明确的答案。

最佳答案

不,PDO 是“数据访问层”,而不是“数据库抽象层”。这意味着您可以切换数据库并仍然进行相同的方法调用,但 PDO 不会重新编写 sql 查询以匹配所选数据库或模拟任何数据库功能。

Per PHP PDO docs :

PDO provides a data-access abstraction layer, which means that, regardless of which database you're using, you use the same functions to issue queries and fetch data. PDO does not provide a database abstraction; it doesn't rewrite SQL or emulate missing features. You should use a full-blown abstraction layer if you need that facility.

关于orm - 对于 Doctrine ORM,为什么除了 PDO 还需要 DBAL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244300/

相关文章:

java - 如何在 hibernate/JPA 中禁用自动更新

c# - Entity Framework : map varchar to DateTime property

php - 如何将关联限制为 Doctrine 中另一个关联的子集?

entity-framework - 实体上列 'urbanization' 的重复定义

php - 根据路由参数将 Doctrine Entity 注入(inject) Symfony Controller

javascript - Sequelize : Check and add BelongsToMany (N to N) relation

php - PDO + SqlAnywhere,可能吗?

php - PDO 中的 mysql_result

mysql - 在 JOIN 期间从单个查找表连接多个表

java - HQL 查询是否总是命中数据库并获得结果?