在codeigniter中使用活动记录和学说

时间:2012-07-15 07:04:32

标签: php codeigniter activerecord doctrine

我很想知道我是否可以使用codeigniter的活动记录查询,除了在某些情况下同时使用doctrine。因为在某些情况下,我发现活动记录更简单快捷地完成工作然后编写学说查询。例如,考虑以下情况,我需要在doctrine:

中返回表中的总行数
$query = $this->em->createQueryBuilder()
  ->select("count(c)")
  ->from($this->entity, "c")
  ->getQuery();
return $query->getSingleScalarResult();

vs via active record:

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

您可以看到它在活动记录中的容易程度。可能会有更多此类案件。那么,使用它们有什么优点或缺点吗?

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

3 个答案:

答案 0 :(得分:1)

  

我很想知道如果我使用codeigniter的活动是否可以   记录查询除了在某些情况下同时使用doctrine

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

  

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

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

关于利弊

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

但从技术上讲,这不是一个使用两层的问题,除了它变得混乱的事实,并且进行两个单独的连接。

答案 1 :(得分:1)

您可以同时使用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();

答案 2 :(得分:0)

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

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