什么是最容易使用的PHP ORM框架?

什么是最容易使用的PHP ORM框架?,php,orm,Php,Orm,我正在寻找Ruby的PHP活动记录。它非常简单,我只需定义字段,扩展基本ORM类,就可以免费获得ACID操作。我应该在不编写任何代码的情况下获取默认getter和setter,但是重写默认getter或setter就像用我想要的行为声明get$fieldName或set$fieldName函数一样简单。Symphony让您为每个对象创建大约5个文件,并且所有已定义的对象总是按我所知的方式加载。什么是更好的选择?为什么更好?你能在你的答案中举个简单的例子吗 除了交响乐,教义是我看过的另一种ORM。

我正在寻找Ruby的PHP活动记录。它非常简单,我只需定义字段,扩展基本ORM类,就可以免费获得ACID操作。我应该在不编写任何代码的情况下获取默认getter和setter,但是重写默认getter或setter就像用我想要的行为声明get$fieldName或set$fieldName函数一样简单。Symphony让您为每个对象创建大约5个文件,并且所有已定义的对象总是按我所知的方式加载。什么是更好的选择?为什么更好?你能在你的答案中举个简单的例子吗

除了交响乐,教义是我看过的另一种ORM。您还需要创建描述数据结构的yaml文件。数据库已经定义了这些东西。什么东西只需读取我的表def而不必到处生成和存储配置文件?

并且在您描述的内容方面相当出色。您不需要任何配置文件,大多数元数据都是从数据库本身“发现”的

从技术上讲,这些类不实现ActiveRecord模式。相反,它们实现了和模式。总之,它们提供了与ActiveRecord相似的价值,并且在某些方面比ActiveRecord更灵活

但是,与任何ORM一样,不可避免地会有一些SQL查询和操作无法通过OO接口完成。没有ORM可以作为一站式购物


脚注:我在Zend框架项目上工作了一年多一点,特别是在Zend_Db组件上。但是我不再为他们工作。

CodeIgniter()和它的PHP5-only fork-Kohana()都包含ActiveRecord模式的实现。

我创建了自己的,没有膨胀。(尽管我需要更新我的现场来源)

我创建它的时候就考虑到了您提到的要点:没有几十个xml文件,没有巨大的框架,只有简单的构造函数和数据库到属性的映射,它完成了基本的CRUD/Find/Join功能。对于我所做的大部分工作,我甚至不需要编写自定义查询

我以前也写过这篇文章,一定要查看一下,了解一下

我将发布的下一个版本包括一行连接一行连接(在数据库中走一条“路径”)、基于ini的数据库设置、跨数据库支持、超级简单的数据库抽象,以及一个标准的记录器,如果数据库出现故障,该记录器将返回SQLite

如果你对更新感兴趣,就大声喊一声,到时候我会赶时间的

哦,是的,别忘了,还有一个很好的可视化脚手架生成器叫做。它尝试分析您的数据库结构并找到1:1:many和many:many关系,并可以自动为您生成类:-)
(来源:)

我非常喜欢一款功能齐全的ORM,它将取代Propel成为Symfony的默认ORM

它包含了您所期望的基本ORM内容,以及一个功能齐全的查询生成器,我发现它非常棒

它附带了一整套命令行工具来管理数据库。例如,您可以在YAML中创建模式和装置,让条令根据模式生成类,创建数据库,根据模型创建模式,然后使用装置填充数据库,所有装置都使用单个
/doctor build all reload

它还包括对数据库迁移以及自动区分和生成迁移模型的迁移的支持

根据您的条令投诉,您可以运行命令
/doctor generate models db
/doctor generate yaml db
,分别从当前数据库设置自动创建模型和yaml文件。

其他细节包括“”,当在您的模式中实现某些行为时,它会使您的生活更加轻松。例如,您可以将“timestable”行为添加到类文件中。Doctine会自动添加“created_at”和“updated_at”列,并填充它们,并且您运行的每个
$object->save()
都会自动更新“updated_at”列。更复杂的行为包括i18n、表版本控制和树(尽管实际上只是嵌套集)


就我个人而言,我一直非常迷恋这条原则,并且一有机会就大肆宣扬它。

检查可维护框架。虽然我更喜欢代码生成而不是ActiveRecord(运行时反射),但我发现可维护框架易于使用,特别是在ORM特性方面


如果您想要基于代码生成的框架,请尝试QCodo。不管德库西尼奥对教义说什么,我都可以对科多说。这是一个模仿.NET/Delphi的事件驱动的完整框架。不过,您可以只使用代码生成功能,并找到将生成的类与框架的其余部分分离的方法。因此,您可以将生成的类嵌入到其他框架中。

Ruby DataMapper实现之后的另一个选项是。它显然是一个数据映射器,而不是ActiveRecord:)。

我使用了一个鲜为人知的orm层,名为redbean。 你可以在这里找到它:。
它的绝对独特之处在于它只创建表、列和索引,而不创建任何配置文件。我发现这是一个巨大的节省时间

我会推荐Symfony的学说。尽管还有更多需要学习的内容,但您会发现它具有项目增长后所需的功能(CRUD、表单框架、记录模板、DQL、插件支持、行为)。这两个项目都有非常活跃的社区,你不应该发现自己陷入了死胡同,因为你的大多数问题已经在官方教程或论坛上得到了回答

如果您不喜欢YAML中的数据库定义,您可以始终使用或MySQL Workbench。

我推荐。它是一个功能强大的PHP5-only ORM框架,专注于代码生成、UI搭建和快速应用