如何使用 Yii 2 构建类似 `select ... where id % 2 = 1` 的查询?

2024-03-22

当然,我可以Yii::$app->db->createCommand($sql)->query(), 但如果我想用一个ActiveRecord::find()->where($conditions)做这个工作?


这是使用的选项之一yii\db\Expression:

use yii\db\Expression;

...

$models = Customer::find()
    ->select(['id', 'name', ...])
    ->where(new Expression('id % 2 = 1')])
    ->all();

它绝对比原始 sql 更好['%2=', 'id', 1]因为它遵循顺序并且在我看来更具可读性。

['%2=', 'id', 1]也不适合这里因为%2=实际上并不是像这样的运算符not in or like例如,所以运算符、值和=标志有点混合在一起。

官方文档:

  • yii\db\表达式 http://www.yiiframework.com/doc-2.0/yii-db-expression.html

Update:我问samdark,Gitter 官方聊天中的主要框架贡献者之一,他说正确的方法是使用yii\db\Expression.

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

如何使用 Yii 2 构建类似 `select ... where id % 2 = 1` 的查询? 的相关文章

  • 使用 ActiveRecord 和 Rails 3 进行复杂 JOIN

    我有以下型号 class User lt ActiveRecord Base has many memberships has many groups through gt memberships end class Group lt Ac
  • 订购 ActiveRecord 关系对象

    我有一个名为的 ActiveRecord 对象contact 它有一个关系叫做profiles 这些配置文件具有 url 属性 配置文件应按 url 按字母顺序排序 我试过了sort by也order但我收到此错误 contact prof
  • Rails 3 ActiveRecord API:.build 方法

    我对 Ruby RoR 相当陌生 一年多了 我注意到 RoR 或 Ruby 内部有几种不同的方法基本上做同样的事情 我想要得到某种澄清的一种方法是 build方法 什么时候使用它是有效的 或者如何以最好的方式使用它 算是一回事 Thanks
  • Yii2如何检查两个模型是否已经链接

    我有两个通过连接表关联的模型 model gt link 是用于建立两个模型之间关系的方法 它基本上用两个模型的相应键填充连接表 如果两个模型已链接并且我尝试再次链接它们 则会出现错误 因为密钥对已存在于连接表中 然后我需要在尝试链接模型之
  • Ruby on Rails:是否有一种方法可以从数据库检索数据数组,而无需 Rails 实例化任何内容?

    我有一个模型 试图从中检索数据数组 并且不需要将数据实例化为 Ruby 对象 事实上 这只是在我的代码中引入了一个额外的步骤来逐步遍历对象并生成一个仅包含我需要的数据的新数组 Example class Book has attribute
  • 通过 Rails 访问 has_many 上的附加值

    我在访问 has many 上名为 permission 的附加参数的值时遇到了真正的麻烦 这可能是很简单的事情 我的 3 个型号是 class User lt ActiveRecord Base has many players user
  • Debian - /usr/bin/env: 'php\r': 没有这样的文件或目录

    所以当我跑步时 直接讨论问题 yii似乎我从 Debian stretch 中收到了从 Docker 运行的错误 然而当我跑步时 usr bin env php v我得到了正确的输出 没有问题 似乎新行被翻译为字符串时出现问题 我不知道如何
  • Hstore 和 Rails

    我正在尝试使用最新版本的 activerecord postgres hstore gem 在 Rails 3 2 9 项目中使用 Hstore 但在使用 ActiveRecord 提供的 store accessor 来获取 Hstore
  • Rails 4 中的“find_all_by_id”相当于什么

    我有一个 id 数组 我想使用活动记录查询从数据库中查找它们各自的记录 例如 ids 2 3 1 现在 对于我来说 要查找 id 是数组中的其中之一的特定模型的所有记录 在较低版本的 Rails 中 我想我可以执行以下操作 Model fi
  • Rails:如何自动完成名称搜索但保存 ID?

    我用过这个视频http railscasts com episodes 102 auto complete association revised http railscasts com episodes 102 auto complete
  • 重用named_scope来定义另一个named_scope

    我所看到的问题本质 有一天 如果我没有记错的话 我看到了一个重用一个named scope来定义另一个named scope的例子 像这样的东西 不记得确切的语法 但这正是我的问题 named scope billable conditio
  • Rails:基于关联值的ActiveRecord查询

    我有 2 个型号 Report and Server具有belongs to 和has many 关系 我使用创建了一个访问器方法delegate这允许Report来查找其关联的Server company id 现在 我想运行一个查询Re
  • Rails 数据库默认值和布尔字段的模型验证

    在 Rails 模型中我有一个属性is subscriber 当我构建数据库迁移以将此列添加到数据库时 我指定默认值为 false t boolean is subscriber default gt false 我还在模型中指定了该属性需
  • 如何覆盖 attr_protected?

    我的 STI 实施如下 class Automobile lt ActiveRecord Base end class Car lt Automobile end class Truck lt Automobile end class Us
  • Rails has_many 通过使用 source 和 source_type 为多种类型设置别名

    这是一个示例类 class Company lt ActiveRecord Base has many investments has many vc firms through investments source investor so
  • 通过 has_many 进行多个数据库连接

    如何通过使用多个数据库连接来创建 has many 我有一个名为 master 的数据库 其中保存位置信息 这是从单独的应用程序更新的 用户可以访问许多位置 但所有其他模型都位于另一个名为 budget 的数据库中 以下是模型的设置方式 p
  • AR模型中的关系函数,多对一关系

    所以这是场景 我有两个表 问题和项目 一个项目可以有多个问题 一个问题只能是一个项目 既然Issue是多对一的 那么你必须定义它吗 因为我知道在项目模型中我有 public function relations return array i
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • Yii2 Composer 管理 Bower 和 Bower-vendor 中的包

    我已经使用 yii2 一段时间了 但我不知道如何管理我的包 在这方面我有两个问题 当我将包添加到 yii2 时 它会在vendor bower bower assets 中下载 当 yii2 发布包时 它会在vendor bower下查找资
  • Rails 4:将数据库导出到 YAML

    使用 Rails 2 3 可以使用几个插件之一将数据库轻松导出 转储 到 YAML 请参阅将数据库表导出到 YAML 文件的最佳方法 https stackoverflow com questions 490507 best way to

随机推荐