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

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


当前回答

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)。Fat-Free只有55kb。

其他回答

如果你喜欢冒险,可以试试Repose。与Outlet一样,它也模仿Hibernate。

它仍然处于开发的早期阶段,但到目前为止,域模型的唯一限制是类没有标记为final,属性没有标记为private。一旦我进入了PHP >= 5.3的领域,我将尝试实现对私有属性的支持。

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

你只需要安装PHP5,然后Phing就可以开始生成类了。

我在miniOrm工作。只是一个迷你ORM,尽可能简单地使用对象模型和MySQL抽象层。希望对大家有所帮助:http://jelnivo.fr/miniOrm/

看着叙利亚ORM。这是一个新的ORM,项目还处于开发阶段,但下个月将发布1.0版本。

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

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