如何使用 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` 的查询? 的相关文章

  • has_many 关系中的 Active Record 对象何时保存?

    我正在使用 Rails 1 2 3 是的 我知道 并且对如何使用感到困惑has many适用于对象持久性 为了举例 我将使用它作为我的声明 class User lt ActiveRecord Base has many assignmen
  • Yii2:对 ajax 提交的表单进行 ajax 表单验证

    我想知道是否有 Yii2 专家可以帮助我了解如何最好地结合使用 ajax 表单和 Yii ajax 验证 我想我可以解释这个问题 而无需向您介绍我的所有代码 我正在制作一个促销代码输入表单 用户在表单中输入促销代码 该表单通过 ajax 提
  • Rails - 连接多个表

    我有以下型号 class Company lt ActiveRecord Base has many price movements has many goods movements end class PriceMovement lt A
  • 合并两个ActiveRecord数组并按created_at排序

    books Book find all articles Articles find all 通过阅读来自http guides rubyonrails org layouts and rendering html http guides
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • Yii2 - 检查用户是否登录视图

    我试图检查用户是否登录到我的视图文件中 但我不断收到此错误 Call to undefined method Yii app 我尝试添加 before app但错误仍然存 在 这次是未定义的变量 应用程序 这可能是观点吗 这是我用来检查用户
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • ActiveRecord 查询,按关联排序,最后一个 has_many

    我试图列出所有Users by the created at最近创建的关联记录 通讯 列 到目前为止我所拥有的 User includes communications order communications created at IS
  • 如何将 yii2 Restful api 中两个表的关系数据显示为 json 格式

    我遇到了将两个表中的数据显示为 JSON 格式并在 yii2 Restful api 上工作的问题 这是我的结构数据库 TABLE volunteer volunteer id int 11 NOT NULL auto increment
  • database.yml 的所有可能键是什么

    我刚刚发现reconnect true配置选项可以在database yml文件 还有哪些其他可能的配置选项 是否有所有选项的完整参考 已知的关键示例 default default adapter mysql2 encoding utf8
  • 在运行时在 Rails 中向模型添加列(无需附加表)

    我试图让我的网络应用程序的管理员能够向模型添加一些新字段 该模型称为 Artwork 我想在运行时添加一个 test column 列 我只是在测试 所以我添加了一个简单的链接来做到这一点 它当然是参数化的 我设法通过迁移来做到这一点 de
  • Rails 销毁除最新的 n 条记录之外的所有记录

    如何使用 Rails 的 ActiveRecord 销毁除最新的 n 条记录之外的所有记录 我可以使用 order 和 limit 获取最新的 n 条记录 但如何销毁逆函数 这些方法中的任何一个都可以做到这一点 Fetch your lat
  • 重复密码在 Yii2 中不起作用

    我在模型中编写的规则如下 public password repeat inheritdoc public function rules return password required password string min gt 6 p
  • Rails Accepts_nested_attributes_for 子级在验证时没有设置父级

    验证时 我试图在子模型中访问我的父模型 我在 has one 上发现了一些关于反向属性的信息 但我的 Rails 2 3 5 无法识别它 因此它一定从未进入发行版 我不确定这是否正是我所需要的 我想根据父属性有条件地验证子属性 我的父模型已
  • 如何在 Yii2 中设置 Flash 消息?

    我跟着这个Link https stackoverflow com questions 29382849 how i use flash message in yii2 我的代码如下 在控制器中 public function action
  • 从 ActiveRecord 获取表名

    I used ActiveRecord Base set table name在动态创建的 ActiveRecord 类上设置我的表名称 现在我需要知道稍后如何获得该值 api 文档没有提及如何执行此操作 另外 我无法从 ActiveRec
  • 附加时间戳和注册资产包

    我使用以下配置通过资产管理器在资产路径中添加时间戳 assetManager gt appendTimestamp gt true 应用程序资产 php class AppAsset extends AssetBundle public b
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 如何在 yii2 中使用两个不同的模型登录或切换身份类别?

    我想允许用户从两个不同的模型登录 配置文件 user gt identityClass gt app models User one more class here enableAutoLogin gt false authTimeout
  • 当我在 yii2 中使用 findbysql 查询时排序和搜索列

    我正在搜索四个表并将它们连接起来并得到我想要的输出 但无法对输出进行排序或过滤 请告诉我如何按地区或销售范围或收集范围搜索它 PartySearch 模型是

随机推荐