3

我必须制作一些过滤器,例如获取给定部门的人员,我想知道最好的方法。

其中一些将需要连接多个表。

有人知道CDbCriteriaQuery Builder 和 Query Builder 之间的主要区别吗?我特别想知道与数据库的兼容性。

我在有关 Query Builder 的 Yii 文档中发现了这一点:

它提供了一定程度的数据库抽象,简化了向不同数据库平台的迁移。

CDbCriteria 对象是否相同?这个会比较好吗?

4

1 回答 1

4

CDbCriteria当使用 Yii 的活动记录(AR) 抽象时(通常是所有时间)使用的概念。AR 要求您为数据库中的各种表创建模型

查询生成器访问数据库的方式非常不同;实际上,它是一个结构化包装器,它允许您以编程方式构造 SQL 查询,而不仅仅是将其写为字符串(作为额外的好处,它还提供了您提到的一定程度的数据库抽象)。

在典型的应用程序中,几乎不需要使用查询构建器,因为 AR 已经提供了大量功能,并且还提供了相同程度的数据库抽象。

在某些情况下,您可能希望运行一种非常特定类型的查询,这种查询不方便或无法通过 AR 发出。然后你有两个选择:

  1. 如果查询是固定的或几乎固定的,那么您可以简单地通过DAO发出它;实际上查询构建器文档中提到“如果您的查询很简单,直接编写 SQL 语句会更容易、更快捷”。
  2. 如果查询需要动态构建,那么查询构建器就非常适合这项工作。

如您所见,查询生成器在大多数情况下并不是那么有用。只有当您想编写非常定制的同时动态构造的查询时,使用它才有意义。

您提到的示例功能可以而且应该使用 AR 来实现。

于 2013-01-12T23:49:07.173 回答