ActiveRecord (CDbCriteria) 与 QueryBuilder?

2023-12-19

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

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

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

我在关于查询生成器的 Yii 文档中找到了这一点:

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

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


的概念CDbCriteria在使用 Yii 时使用活动记录 http://www.yiiframework.com/doc/guide/1.1/en/database.ar(AR) 抽象(通常是所有时间)。 AR 要求您已创建models http://www.yiiframework.com/doc/guide/1.1/en/database.ar#defining-ar-class对于数据库中的各个表。

查询生成器 http://www.yiiframework.com/doc/guide/1.1/en/database.query-builder一种非常不同的访问数据库的方式;实际上,它是一个结构化包装器,允许您以编程方式构建 SQL 查询,而不仅仅是将其写为字符串(作为额外的好处,正如您提到的,它还提供一定程度的数据库抽象)。

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

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

  1. 如果查询已修复或几乎已修复,那么您只需通过以下方式发出即可DAO http://www.yiiframework.com/doc/guide/1.1/en/database.dao;事实上,查询生成器文档提到“如果您的查询很简单,那么直接编写 SQL 语句会更容易、更快”。
  2. 如果需要动态构建查询,那么查询构建器就非常适合这项工作。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActiveRecord (CDbCriteria) 与 QueryBuilder? 的相关文章

  • 使用 ActiveRecord::Relation 时的 RSpec 匹配器

    所以这是我要测试的方法 def self by letter letter where lastname LIKE letter order lastname end 简单问一下 letter 后面的百分号到底有什么作用 跟格式化有关系吗
  • 在 CGridView 中显示另一个模型的属性

    在 Yii 中 我正在做多模型 我的数据库是这样的 Group id name Member id group id firstname lastname membersince 在组控制器中 我想显示成员的属性 一切工作正常 但是当我使用
  • Rails 中是否可以跨多个数据库进行内部联接?

    我很难使用has many through关联 其中一些表位于单独的数据库中 database one class Input lt ApplicationRecord belongs to user Works great end dat
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • Yii框架异步请求

    我有一个执行 3 个任务的 ajax 请求 保存模型 数据库 发电子邮件 给出成功或失败的消息 因为这个任务需要的时间太长了 用户最多可以等待 20 秒以获得响应 成功或失败消息 如果用户关闭浏览器 则其会停止用户当前进程的操作之一 这是糟
  • Ruby/Rails - 访问“查找”表而不对其进行建模?

    这是针对 Ruby on Rails 3 0 x 项目的 我有一个 查找 表 其中包含来自供应商的数据 当我从其他来源导入数据时 我想检查此表 加入 SKU 以获取额外数据 在我的应用程序中为该表创建模型对我来说似乎不合适 我的应用程序永远
  • 如何使 Active Record 连接返回唯一的对象?

    我有一个简单的查询需求 查找自2013年1月1日以来下过订单的用户列表 在 SQL 中 这是一个非常简单的查询 但我正在使用 Rails 和 Active Record 所以我写道 User joins orders where order
  • Yii2 无效调用:设置只读属性

    我有一个Post具有多对多关系的模型Tags 在 Post 模型中定义 public function getTags return this gt hasMany Tags className id gt tag id gt viaTab
  • database.yml 的所有可能键是什么

    我刚刚发现reconnect true配置选项可以在database yml文件 还有哪些其他可能的配置选项 是否有所有选项的完整参考 已知的关键示例 default default adapter mysql2 encoding utf8
  • 新分配的序列不起作用

    在 PostgreSQL 中 我创建了一个新表并为其分配了一个新序列id柱子 如果我从 PostgreSQL 控制台插入记录 它可以工作 但是当我尝试从 Rails 导入记录时 它会引发异常 无法找到关联的序列 这是表格 d user me
  • 如何避免ActiveRecord模型双重保存?

    型号 一 class One lt ActiveRecord Base before save do stuff private def do stuff two Two find 8 two field2 Value two save e
  • 如何使用 ActiveRecord 列出所有数据库

    我希望能够使用 ActiveRecord 列出所有数据库 因此 我需要在终端中使用与以下命令等效的 ActiveRecord psql host 192 168 0 100 port 5432 username postgres list
  • 从 Yii 中的 registerScript 方法强制执行脚本顺序

    我创建了一个小部件 它注册了自己的脚本 如下所示 class MyWidget extends CWidget public function run Yii app gt clientScript gt registerScript CL
  • Rails 模型中的 class_nameforeign_key

    我最近遇到了这段代码 用户有很多答案 class name 和 foreign key 的目的是什么 class Answer lt ApplicationRecord belongs to user class name gt Quest
  • 从 Rails 4 启用 Amazon RDS 中的 hstore 扩展

    我有一个 Rails 4 应用程序 它使用 ActiveRecord 与 PostgreSQL 9 3 数据库交互 该应用程序利用hstorePostgreSQL 中的扩展 用于在单个数据库字段中存储键值对 因此 Rails 会自动检测我对
  • 从 ActiveRecord 获取表名

    I used ActiveRecord Base set table name在动态创建的 ActiveRecord 类上设置我的表名称 现在我需要知道稍后如何获得该值 api 文档没有提及如何执行此操作 另外 我无法从 ActiveRec
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • 属性“tablename.title”未定义

    我是伊比 我想做的是上传图像 照片 以及具有更新功能的数据库中的路径条目 我已点击此链接 http www yiiframework com wiki 349 how to upload image photo and path entry
  • 未知属性:user_id

    我在执行 current user stories build 期间收到错误未知属性 user id class User lt ActiveRecord Base has many stories class name Story for
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array

随机推荐

  • 如何防止任务管理器杀死我的程序?

    有什么方法可以保护我的 Delphi 应用程序不被 Windows 任务管理器 或其他类似 Process Explorer 杀死 我认为 Windows 消息可以做到这一点 通过执行挂钩并拦截 TerminateProcess 消息 我想
  • 根据年份而不是最小值或最大值重置序列

    创建一个将根据年份重置的序列 考虑以 000000001 开头的 9 位数字序列 最大值为 999999999 出租日期为 30 12 2017 seq 为 000012849 因此 当日期为 01 01 2018 时 我希望 seq 为
  • WebSocket 在 django 通用中间件中生成错误

    我正在使用 Django gevent socketio Haproxy 所有套接字功能都工作正常 但在后台它会生成如下所示的错误 似乎 Haproxy 的套接字标头具有非常有限的属性 其中不包含 status code 因此它失败并发送错
  • 如何存储每个上下文而不是每个程序的 OpenGL 程序对象的制服?

    我正在开发多线程 OpenGL 合成引擎 我有一组在多个上下文之间共享的着色器 出于性能原因 我想避免为每个线程编译每个着色器程序的单独实例 但是 如果多个线程碰巧使用同一个程序对象 并且我尝试在每个线程上设置不同的统一值 则统一值会混淆
  • 导入/导出项目首选项

    遇到一点问题 由于我们使用的源代码控制设置 每个错误 增强都在新分支中进行 这很好 但是在 Eclipse 中 我们需要为每个分支设置一个新项目 有没有什么方法可以轻松地为项目设置默认首选项 或者在 Eclipse 中导入 导出项目首选项
  • 使用Maven和Spring实现依赖倒置原则

    根据这篇维基百科文章 实现依赖倒置原则 https en wikipedia org wiki Dependency inversion principle DIP implementations可以通过两种方式完成 在单独的包中对低级组件
  • Python 2.5 中的相对导入

    我知道在 Python 中存在很多关于相同导入问题的问题 但似乎没有人能够提供正确用法的清晰示例 假设我们有一个包mypackage有两个模块foo and bar 里面foo我们需要能够访问bar 因为我们还在开发中 mypackage不
  • 如何在login.do提交时将表单密码数据隐藏在Chrome开发者工具网络面板中?

    当正常登录时以简单的html表单提交 Chrome 开发者工具 网络 面板显示这样的表单数据 但在 Facebook Google 等主要网站上 他们不会像这样在网络面板中显示表单数据 怎样才能做到这一点呢 有没有例子或者教程 我们无法隐藏
  • 粗俗的代码。国际奥委会的救援

    In question https stackoverflow com questions 871405 why do i need an ioc container as opposed to straightforward di cod
  • 使用 crontab 安排 python 脚本

    我有一个 bash 脚本 我正在尝试使用 cron 作业运行它 我正在尝试在我的 ubuntu 服务器上运行 cron 作业 我希望它每天 8 小时 UTC 运行 bash 脚本激活 conda python 虚拟环境并运行 python
  • 如何使用ipad上的控件将视频输出到外接显示器上?

    目前 当从 iPad 将视频输出到外部显示器时 它将控件和所有内容移动到外部显示器 这没有用 因为当控件位于外部显示器上时 您无法控制电影 以下是我们应用程序中的一些代码片段 这是屏幕设置代码 称为 setupExternalScreen
  • 使用 SQL 检查 IP 地址并将其映射到子网查找表

    我有一个表 显示分配给属于客户的设备的 IP 地址 该表用于衡量用户的活动和表现 并定期生成 我想将这些客户的 IP 地址映射到客户 ID 或姓名 由于规模和可以分配给同一客户的多个 IP 地址 我们必须使用子网而不是单独的 IP 地址 报
  • C# 检查文件目标是否有效

    是否有标准函数来检查指定目录是否有效 我问的原因是我从用户那里收到绝对目录字符串和文件名 我想彻底检查该位置以检查它是否有效 对于一个文件 File Exists string 对于目录 Directory Exists string NO
  • 为(字符串)哈希函数选择乘数

    您对选择在 乘法 哈希函数中使用的乘数有什么建议 规则吗 该函数正在计算字符串的哈希值 您想要使用与您的集合大小相对素数的东西 这样 当您循环时 您将不会得到与刚刚尝试过的相同的数字
  • 读取 toad 导出的 csv 文件后,第一列名称中添加了奇怪的字符

    每当我读到csvR 中的文件 read csv file name csv 使用 toad 导出的数据 第一个列名称前面带有以下字符 另外 在 excel 或 notepad 中打开 csv 文件会正确显示 没有前面的字符 这很麻烦 因为我
  • 页面加载后如何检查RadioButton-Item是否被选中?

    我的RadioButtonList 是用纯asp net 创建的 如下所示
  • 如何将持久性单元的 JPA EntityManagerFactory 设置为不“默认”

    通常情况下 所有默认配置Spring boot完全没问题 但现在我需要将应用程序部署到 Weblogic 12 2 服务器 并且面临一些有关持久性的问题 我只是想知道如何将持久性单元的 JPA EntityManagerFactory 设置
  • CodeIgniter 中的 Paypal

    在阅读了 Paypals 开发者网站上的文档相当长一段时间后 我开始使用 Stack 我对整个 API 的工作原理有点困惑 我决定把它简单化 看看我是否需要使用比按钮更复杂的东西 所以 我需要的 数字商品的多种选择 IE 2 个帖子 5 美
  • 使用正则表达式进行过滤器映射

    我知道我不能使用正则表达式作为过滤器映射的 url 模式 但我想知道是否可以使用类似的方法来映射过滤器 foo 否 至于通配符匹配
  • ActiveRecord (CDbCriteria) 与 QueryBuilder?

    我必须做一些过滤器 例如获取给定部门的人员 我想知道最好的方法 其中一些需要连接多个表 有谁知道之间的主要区别CDbCriteria和查询生成器 我特别想了解与数据库的兼容性 我在关于查询生成器的 Yii 文档中找到了这一点 它提供一定程度