【问题标题】:ActiveRecord (CDbCriteria) vs QueryBuilder?ActiveRecord (CDbCriteria) vs QueryBuilder?
【发布时间】:2013-01-12 23:25:30
【问题描述】:

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

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

有人知道CDbCriteria 和查询生成器之间的主要区别吗?我特别想知道与数据库的兼容性。

我在有关 Query Builder 的 Yii 文档中找到了这个:

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

CDbCriteria 对象是否相同?好点了吗?

【问题讨论】:

    标签: activerecord yii phpactiverecord


    【解决方案1】:

    CDbCriteria 的概念在使用 Yii 的 active record (AR) 抽象时使用(通常一直如此)。 AR 要求您为数据库中的各种表创建 models

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-03-15
      • 2013-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多