当前位置:  开发笔记 > 编程语言 > 正文

好的PHP ORM库?

如何解决《好的PHPORM库?》经验,为你挑选了12个好方法。

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

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



1> Ian P..:

看看学说.

Doctrine 1.2实现了Active Record.Doctrine 2+是一个DataMapper ORM.

另外,看看Xyster.它基于Data Mapper模式.

另外,请查看DataMapper与Active Record.



2> 小智..:

试试RedBean,它要求:

没有配置

没有数据库(它可以动态创建所有内容)

没有型号

等等

它甚至可以为您执行所有锁定和事务处理,并在后台监视性能.(哎呀!它甚至可以进行垃圾收集....)最重要的是......你不必写一行代码......耶稣这个,ORM层,救了我屁股!


redbean是我曾经使用过的最好的数据库抽象层.不是"最好的"之一 - 最好的.
但是:http://stackoverflow.com/questions/3212917/redbean-o-rm-store-date-as-varchar255
+1 +1 +1 +!+!!!!! ...耶稣我读了文档的第一部分,它让我做出了阴险的独裁者笑声,我已经下载了它!

3> Ilya Kocheto..:

只有两个好的:Doctrine和Propel.我们赞成Doctrine,它与Symfony配合得很好.但是,如果您正在寻找除主要数据库支持之外的数据库支持,则必须编写自己的代码.



4> bcosca..:

Axon ORM是Fat-Free Framework的一部分 - 它具有即时映射器.没有代码生成器.没有愚蠢的XML/YAML配置文件.它直接从后端读取数据库模式,因此在大多数CRUD操作中,您甚至不必扩展基本模型.它适用于所有主要的PDO支持的数据库引擎:MySQL,SQLite,SQL Server/Sybase,Oracle,PostgreSQL等.

/* SQL */
CREATE TABLE products (
    product_id INTEGER,
    description VARCHAR(128),
    PRIMARY KEY (product_id)
);

/* PHP */
// Create
$product=new Axon('products'); // Automatically reads the above schema
$product->product_id=123;
$product->description='Sofa bed';
$product->save(); // ORM knows it's a new record

// Retrieve
$product->load('product_id=123');
echo $product->description;

// Update
$product->description='A better sofa bed';
$product->save(); // ORM knows it's an existing record

// Delete
$product->erase();

最重要的是,插件和附带的SQL数据访问层与框架一样轻量级:14 KB(Axon)+ 6 KB(SQLdb).无脂肪只需55 KB.


当我在一个例子中看到类似`$ product-> load('product_id = 123')的东西时,它总是让我担心.
对于偏执狂,替代语法是`$ product-> load(array('product_id =:id',array(':id'=> 123)));`
Fat-Free还为MongoDB和平面文件提供NoSQL ORM

5> SchizoDuckie..:

我一直在自己开发Pork.dbObject.(一个简单的PHP ORM和Active Record实现)主要原因是我发现大多数ORM太重了.

Pork.dbObejct的主要思想是重量轻,设置简单.没有一堆XML文件,只是构造函数中的一个函数调用来绑定它,addRelation或addCustomRelation来定义与另一个dbObject的关系.

看看:Pork.dbObject


Duude!这非常有趣.我看到最新的更新发生在09年的某个地方.这仍然保持?如果不是......我可能会复活它:)

6> Tom Pažourek..:

试试Doctrine2.它可能是PHP最强大的ORM工具.我将它与Doctrine 1分开提及,因为它是一个完全不同的软件.它已经从头开始重写,仍然处于测试阶段,但现在可以使用并开发了.

这是一个非常复杂的ORM,但设计精良.原始主义1的许多魔法消失了.它提供了一个完整的解决方案,您可以在Doctrine2之上编写自己的ORM,或只使用其中一个层.


@jblue:这不是问题,它是一个功能;-).像Doctrine这样的大型库需要命名空间.

7> Zak..:

我刚开始使用Kohana,它似乎最接近Ruby on Rails而没有调用像Propel那样的多个配置文件的所有复杂性.



8> 小智..:

查看Outlet ORM.它比Propel和Doctrine更简单,它的工作方式类似于Hibernate,只有更多的PHP感觉.


我试过这个.我不得不在3个地方指定相同的对象属性 - 配置,模型和数据库模式.这是实施ORM IMO的大量工作.

9> CMS..:

我非常喜欢Propel,在这里你可以得到一个概述,文档非常好,你可以通过PEAR或SVN获得它.

您只需要一个有效的PHP5安装,并且Phing可以开始生成类.



10> VDVLeon..:

我在PHP库蓬勃发展中找到了与ORM相关的类.



11> Olivier Lalo..:

尝试使用dORM,PHP 5的对象关系映射器.它支持各种关系(1对1),(1对多),(多对多)和数据类型.它完全不引人注目:不需要代码生成或类扩展.在我看来,它优于任何ORM,包括Doctrine和Propel.但是,它仍处于测试阶段,并可能在未来几个月内发生重大变化.http://www.getdorm.com

它的学习曲线也非常小.您将使用的三种主要方法是:

getClassName('id_here');
$dorm->save($object);
$dorm->delete($object);


链接坏了吗?

12> 小智..:

你应该看看Idiorm和巴黎.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有