PHP有好的对象关系映射库吗?

我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。


当前回答

看看Kohana的LEAP ORM。它可以与一系列数据库一起工作,包括DB2、Drizzle、Firebird、MariaDB、SQL Server、MySQL、Oracle、PostgreSQL和SQLite。通过一个简单的自动加载函数,它可以与几乎任何PHP框架一起工作。源代码在GitHub上https://github.com/spadefoot/kohana-orm-leap。你可以在线查看LEAP的教程。

ORM库使用非整数主键和复合键。连接是通过数据库连接池管理的,它与原始SQL查询一起工作。ORM甚至有一个查询构建器,使构建SQL语句超级简单。

其他回答

如果你喜欢冒险,可以试试Repose。与Outlet一样,它也模仿Hibernate。

它仍然处于开发的早期阶段,但到目前为止,域模型的唯一限制是类没有标记为final,属性没有标记为private。一旦我进入了PHP >= 5.3的领域,我将尝试实现对私有属性的支持。

教条主义可能是你最好的选择。在Doctrine之前,DB_DataObject本质上是唯一一个开源的实用程序。

一个非常好的简单ORM是MyActiveRecord。MyActiveRecord文档。我经常使用它,可以说它非常简单,经过了很好的测试。

尝试了蓬勃库的ORM。

敏捷工具包有自己独特的ORM/ActiveRecord和动态SQL实现。

作品简介:http://agiletoolkit.org/intro/1

语法(活动记录):

$emp=$this->add('Model_Employee');
$emp['name']='John';
$emp['salary']=500;
$emp->save();

语法(动态SQL):

$result = $emp->count()->where('salary','>',400)->getOne();

虽然可以直接使用动态SQL和活动记录/ORM,但敏捷工具包进一步将它们与用户界面和jQuery UI集成在一起。这类似于JSF,但是用纯PHP编写。

$this->add('CRUD')->setModel('Employee');

这将显示ajax化的CRUD with for Employee模型。