我使用 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/