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

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


当前回答

NotORM

include "NotORM.php";
 $pdo = new PDO("mysql:dbname=software");
 $db = new NotORM($pdo);
 $applications = $db->application()
->select("id, title")
->where("web LIKE ?", "http://%")
->order("title")
->limit(10)
;
foreach ($applications as $id => $application) {
echo "$application[title]\n";
}

其他回答

看看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语句超级简单。

我们使用的另一个很棒的开源PHP ORM是PHPSmartDb。它是稳定的,使您的代码更加安全和干净。其中的数据库功能是我在PHP 5.3中使用过的最简单的功能。

Doctrine2试试。它可能是最强大的PHP ORM工具。我把它和教义一分开提,因为它是完全不同的软件。它是从头重写的,仍然处于测试阶段,但现在已经可以使用了。

这是一个非常复杂的ORM,但设计得很好。第一条教义中的很多魔法都消失了。它提供了一个完整的解决方案,您可以在Doctrine2的基础上编写自己的ORM,也可以只使用其中的一个层。

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

好的只有两个:Doctrine和Propel。我们喜欢Doctrine,它和Symfony配合得很好。然而,如果你正在寻找数据库支持之外的主要,你将不得不编写自己的代码。