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";
}

其他回答

我在PHP库中找到了ORM相关的类。

如果您正在寻找一个实现数据映射器范式(而不是专门实现活动记录)的ORM,那么我强烈建议您考虑一下GacelaPHP。

Gacela特点:

数据映射器 外键映射 关联映射 依赖映射 具体表继承 查询对象 元数据映射 懒惰和急于装载 完全支持Memcached

其他ORM解决方案在开发任何远程复杂的东西时都过于臃肿或具有繁重的限制。通过实现数据映射器模式,Gacela解决了活动记录方法的局限性,同时通过在与数据库和Memcached的所有交互中使用PDO将膨胀保持在最低限度。

如果您正在寻找ORM(如Hibernate),则应该查看PMO。

它可以很容易地集成到SOA体系结构中(只需要开发一个webservice类)。

敏捷工具包有自己独特的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模型。

我在Idiorm和巴黎都有很好的经历。Idiorm是一个小而简单的ORM库。Paris是在Idiorm上构建的一个同样简单的活动记录实现。它是PHP 5.2+ PDO。如果您想要一些简单的东西,可以直接放到现有的应用程序中,那么它是完美的。