gpt4 book ai didi

ActiveRecord (CDbCriteria) 与 QueryBuilder?

转载 作者:行者123 更新时间:2023-12-04 04:11:15 26 4
gpt4 key购买 nike

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

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

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

我在有关查询生成器的 Yii 文档中找到了这个:

It offers certain degree of DB abstraction, which simplifies migration to different DB platforms.

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

最佳答案

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

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

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

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

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

如您所见,查询生成器在大多数时候并不是那么有用。仅当您想要编写高度自定义且同时动态构造的查询时,才有意义使用它。

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

关于ActiveRecord (CDbCriteria) 与 QueryBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14299029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com