【问题标题】:Which ORM for codeigniter? [closed]哪个ORM用于codeigniter? [关闭]
【发布时间】:2011-03-27 04:13:38
【问题描述】:

下面的引述已经说服最终采用 ORM。在过去,我真的不喜欢 ORM 并将其作为一种愚蠢的 sql 方式写下来。在sql中处理分层数据是我不想处理的痛苦。

我们拥有这些“对象-关系映射器”是有原因的,这是因为一个称为对象-关系阻抗不匹配的问题。基本上,用于确保数据库保持完整的正式数学模型遵循具有行和列以及对其他表的引用的表系统,而我们今天使用的大多数编程语言中的数据结构以嵌套的树状结构操作数据。这很像电子表格和 XML 文档之间的区别,或者分类账和家谱图之间的区别。 - http://zork.net/motd/nick/django/your-favorite-orm-sucks.html

我想要一些设置工作最少的东西。我的大部分项目都很小,所以当我只将它们用于少数查询时,我不想花太多时间定义模型。

我使用 codeigniter 作为 php 框架和 MySQL 作为数据库。

【问题讨论】:

  • Good PHP ORM Library?many others 的可能重复项
  • 没有任何递归或分层查询支持的数据库中的分层数据是您的问题。 PostgreSQL 将是一个可行的替代方案,尽管现在有免费的 SQL Server 和 Oracle 版本可用......
  • @OMG Ponies 所以基本上问题是 mySQL 不支持对象,所以获取数据的唯一方法是递归查询或执行一堆左连接并最终得到冗余数据?我只是简单地处理了oracle,存储过程是正确的工具,还是查询实际上可以返回对象中的分层数据?
  • Oracle 从 v2 开始支持分层查询,使用 CONNECT BY 语法。执行此操作的 ANSI 方法是使用递归 WITH 子句,Oracle 直到 11g R2 才支持该子句,而 SQL Server 2005+ 是(导致 ANSI 接受)。我不清楚 PostgreSQL 的哪个版本开始递归 WITH 支持 - 我相信是 8.x。
  • @OGM Ponies 我查看了 oracle 示例,它看起来非常整洁。我想获得任意长度的树的最简单方法是左连接并使用一些 php 循环将所有内容移动到嵌套数组中。我认为这比为我的小项目设置 ORM 更容易。任何事情都胜过递归查询。不幸的是,我坚持使用 MySQL,但阅读 WITH RECURSIVE 和 CONNECT BY 很有趣

标签: php sql orm codeigniter


【解决方案1】:

我认为您应该尝试使用原生 CI 编写的DataMapper ORM,它也易于配置和使用。我认为它比教条更好。

【讨论】:

    【解决方案2】:

    这是我使用的那些

    1. Doctrine

    2. DataMapper

    【讨论】:

      【解决方案3】:

      Doctrine 非常出色,并且非常易于设置和使用 CI。有三种集成方式 1) CI wiki 中描述的方式 2) 作为插件 3) 使用钩子。我不喜欢选项 1,因为它涉及弄乱 CI 系统文件。选项 2 非常简单,也是我目前使用的。设置在 www.phpandstuff.com 进行了描述。我从未尝试过选项 3,但听起来很有趣 - http://blog.medryx.org/2008/10/04/codeigniter-and-doctrine/

      【讨论】:

      • 谢谢。我正在阅读学说文档。有很多东西要学,但如果我可以在任何框架上使用它,那将是值得的。
      • 链接失效
      【解决方案4】:

      Datamapper Overzealous Edition怎么样

      我认为原始 DataMapper(来自 stensi)不再处于开发阶段。 (如果我错了,请有人纠正我)Datamapper Overzealous Edition 很容易使用 Codeigniter。

      我确信 Doctrine 也很有效,但我不确定使用 Codeigniter 设置是否容易。

      【讨论】:

        【解决方案5】:

        我会推荐

        http://www.doctrine-project.org/,它很受欢迎,所以你会有知识,并且可以在其他框架中使用它。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-01
          • 2011-08-15
          • 1970-01-01
          • 2011-12-20
          • 1970-01-01
          • 2011-03-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多