0

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

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

与通过活动记录相比:

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

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

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

4

3 回答 3

1

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

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

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

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

关于利弊

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

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

于 2012-07-15T07:11:56.123 回答
1

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

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

Doctrine 在 Active Record 之上添加了什么 - CodeIgniter?

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

$query = $em->createQuery('SELECT COUNT(u.id) FROM Entities\User u');
$count = $query->getSingleScalarResult();
于 2012-07-17T00:12:34.270 回答
0

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

我将在几天内更新更多文件。

于 2015-05-14T07:30:26.367 回答