PHP有好的对象关系映射库吗?
我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。
PHP有好的对象关系映射库吗?
我知道PDO/ADO,但它们似乎只提供了数据库供应商之间差异的抽象,而不是域模型和关系模型之间的实际映射。我正在寻找一个PHP库,功能类似于Hibernate为Java和NHibernate为。net所做的方式。
当前回答
你应该去伊迪奥姆和巴黎看看。
其他回答
如果您正在寻找一个实现数据映射器范式(而不是专门实现活动记录)的ORM,那么我强烈建议您考虑一下GacelaPHP。
Gacela特点:
数据映射器 外键映射 关联映射 依赖映射 具体表继承 查询对象 元数据映射 懒惰和急于装载 完全支持Memcached
其他ORM解决方案在开发任何远程复杂的东西时都过于臃肿或具有繁重的限制。通过实现数据映射器模式,Gacela解决了活动记录方法的局限性,同时通过在与数据库和Memcached的所有交互中使用PDO将膨胀保持在最低限度。
敏捷工具包有自己独特的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模型。
看看《教义》。
Doctrine 1.2实现了活动记录。Doctrine 2+是一个DataMapper ORM。
还有,看看Xyster。它基于Data Mapper模式。
另外,看看DataMapper和活动记录。
让我们尝试一下dORM,它是PHP 5的对象关系映射器。它支持所有类型的关系(1对1)、(1对多)、(多对多)和数据类型。它完全不引人注目:不需要代码生成或类扩展。在我看来,它比任何ORM都要优越,包括Doctrine和Propel。然而,它仍处于测试阶段,并可能在未来几个月发生重大变化。http://www.getdorm.com
它的学习曲线也非常小。你将使用的三个主要方法是:
<?php
$object = $dorm->getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);
好的只有两个:Doctrine和Propel。我们喜欢Doctrine,它和Symfony配合得很好。然而,如果你正在寻找数据库支持之外的主要,你将不得不编写自己的代码。