PHP有好的对象关系映射库吗?
我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。
PHP有好的对象关系映射库吗?
我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。
当前回答
qcube框架中包含了一个很棒的ORM;它基于代码生成和搭建。与基于反射的ActiveRecord不同,代码生成基于数据库为您生成骨架类,然后让您自定义它们。这招很管用。
其他回答
看看《教义》。
Doctrine 1.2实现了活动记录。Doctrine 2+是一个DataMapper ORM。
还有,看看Xyster。它基于Data Mapper模式。
另外,看看DataMapper和活动记录。
试试红豆,它要求:
没有配置 没有数据库(一切都是动态创建的) 没有模型 等。
它甚至为您执行所有的锁定和事务,并在后台监视性能。(见鬼!它甚至做垃圾收集....)最棒的是……你不必写一首……代码行…天哪,ORM层救了我!
好的只有两个:Doctrine和Propel。我们喜欢Doctrine,它和Symfony配合得很好。然而,如果你正在寻找数据库支持之外的主要,你将不得不编写自己的代码。
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";
}
如果您正在寻找一个实现数据映射器范式(而不是专门实现活动记录)的ORM,那么我强烈建议您考虑一下GacelaPHP。
Gacela特点:
数据映射器 外键映射 关联映射 依赖映射 具体表继承 查询对象 元数据映射 懒惰和急于装载 完全支持Memcached
其他ORM解决方案在开发任何远程复杂的东西时都过于臃肿或具有繁重的限制。通过实现数据映射器模式,Gacela解决了活动记录方法的局限性,同时通过在与数据库和Memcached的所有交互中使用PDO将膨胀保持在最低限度。