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

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


当前回答

教条主义可能是你最好的选择。在Doctrine之前,DB_DataObject本质上是唯一一个开源的实用程序。

其他回答

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。

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

Gacela特点:

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

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

巴西ORM: http://www.hufersil.com.br/lumine。它适用于PHP 5.2+。在我看来,它是葡萄牙人和巴西人的最佳选择,因为它有易于理解的文档和大量的示例可供下载。

你应该去伊迪奥姆和巴黎看看。

检查出口ORM。它比Propel和Doctrine更简单,它的工作原理类似于Hibernate,只是它有更多的PHP感觉。