对于ORM,为什么除了PDO之外还需要DBAL?
我已经和条令2 ORM合作一段时间了,有一件事我从来没有完全理解过 DBAL(数据库抽象层)有什么用途?PDO本身就是一个数据库抽象层,那么为什么ORM不能直接与PDO一起工作呢 我并不是在试图找到一种使用DBAL或任何东西的方法。我一直不明白为什么需要额外的层,在文档中似乎找不到明确的答案。不,PDO是“数据访问层”,而不是“数据库抽象层”。这意味着您可以切换数据库并仍然进行相同的方法调用,但PDO不会重新编写sql查询以匹配所选数据库或模拟任何数据库功能 : PDO提供了一个数据访问抽象层,这意味着,无论使用哪个数据库,都使用相同的函数来发出查询和获取数据。PDO不提供数据库抽象;它不会重写SQL或模拟缺少的特性。如果您需要一个完整的抽象层,那么您应该使用它对于ORM,为什么除了PDO之外还需要DBAL?,orm,pdo,doctrine-orm,Orm,Pdo,Doctrine Orm,我已经和条令2 ORM合作一段时间了,有一件事我从来没有完全理解过 DBAL(数据库抽象层)有什么用途?PDO本身就是一个数据库抽象层,那么为什么ORM不能直接与PDO一起工作呢 我并不是在试图找到一种使用DBAL或任何东西的方法。我一直不明白为什么需要额外的层,在文档中似乎找不到明确的答案。不,PDO是“数据访问层”,而不是“数据库抽象层”。这意味着您可以切换数据库并仍然进行相同的方法调用,但PDO不会重新编写sql查询以匹配所选数据库或模拟任何数据库功能 : PDO提供了一个数据访问抽象层,
Doctrine2实际上支持一些非PDO数据库,这就是原因之一。 查看源代码也很有用。连接类(例如)有一个很好的:
public function insert($tableName, array $data)
这将插入一条包含转义的新记录。谢谢-这有助于我更好地理解层之间的关系。查看源代码是一个很好的主意,它将帮助我了解每一步发生的事情