【问题标题】:using both active record and doctrine in codeigniter在 codeigniter 中同时使用活动记录和学说
【发布时间】:2012-07-14 11:07:46
【问题描述】:

我很想知道,除了在某些情况下同时使用原则之外,如果我使用 codeigniter 的活动记录查询是否可以。因为在某些情况下,我发现主动记录比编写学说查询更容易和更快捷地完成任务。例如,考虑以下情况,我需要在学说中返回表中的总行数:

$query = $this->em->createQueryBuilder()
  ->select("count(c)")
  ->from($this->entity, "c")
  ->getQuery();
return $query->getSingleScalarResult();

vs 通过活动记录:

return $this->db->count_all_results($this->table);

您可以在活动记录中看到它是多么容易。可能还有更多这样的案例。那么,两者都用有什么优缺点呢?

另外,他们会使用两个不同的数据库连接来执行他们的操作吗?

【问题讨论】:

    标签: php codeigniter activerecord doctrine


    【解决方案1】:

    在 CI 中找到学说集成的链接 https://github.com/mitul69/codeigniter-doctrine-integration

    我会在几天内更新更多文档。

    【讨论】:

      【解决方案2】:

      您可以同时使用 Doctrine 和 ActiveRecord。剑鱼突出了一些问题。除此之外,如果你引入新的开发团队,学习曲线会更长。

      我建议选择一个并坚持下去。 IMO,两者都一样好。您应该根据您当前的项目和个人喜好进行选择。你可以在这里找到非常好的比较

      What Does Doctrine Add Above Active Record - CodeIgniter?

      关于你提到的两个查询,如果你使用 DQL,它可能看起来很简单

      $query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
      $count = $query->getSingleScalarResult();
      

      【讨论】:

        【解决方案3】:

        我很想知道如果我激活了 codeigniter 是否可以 除了在某些情况下使用学说之外,同时记录查询

        是的,没关系。没有规则反对它。

        另外,他们是否会使用两个不同的数据库连接来执行他们的 操作?

        取决于您如何使用它们。 PHP 中的连接池与其他语言不同。您可能必须编写一个自定义类来将它们连接起来以使用公共连接,但如果我赶时间的话,我不会花时间去做。

        关于利弊

        就 codeigniter 而言,坚持使用活动记录是件好事,因为它更清洁、更高效,并且是 codeigniter 的一部分,几乎可以为您提供您可能需要的一切。您可以从在基类上扩展的 codeigniter 论坛获取扩展的活动记录类,以提供一些复杂的连接功能。

        但从技术上讲,使用两层不是问题,除了它会变得混乱并建立两个独立的连接。

        【讨论】:

          猜你喜欢
          • 2010-10-20
          • 2011-02-28
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          • 2011-03-22
          • 2011-01-13
          • 2014-10-19
          相关资源
          最近更新 更多