cakePHP 3 查询 ifnull

2023-12-05

我想知道防止结果集中出现空结果的最佳方法是什么。我正在使用 cake 3.5.13,我正在使用案例,例如:

private function addCase($isforeign, $source)
{
    $query = $this->Sales->find();
    return $query->newExpr()
        ->addCase(
            $query->newExpr()->add([
                'Sales.isforeign' => $isforeign,
                'Sales.source' => $source
            ]),
            1,
            'integer');
}

然后我将 addCase 函数的返回值放入

(..)
'sourcenationalcount' => $query->func()->sum($this->addCase(0, 1)),
(..)

现在,sourcenationalcount 可能会变为空。返回值 0 的最佳方法是什么?我没能找到func()->ifnull()。我应该使用formatResult()反而?


函数构建器可以创建任何你想要的函数,你只需要调用它,并且构建器的魔术方法调用处理程序将创建一个通用函数调用,以防没有实现具体方法,即func()->ifnull()就会起作用。

然而,IFNULL是 MySQL/SQLite 特定的,所以为了尽可能保持可移植性,我建议简单地使用ELSE相反,选择一个0代替NULL如果条件评估为FALSE.

$query
    ->newExpr()
    ->addCase(
        [
            $query->newExpr()->add([
                'Sales.isforeign' => $isforeign,
                'Sales.source' => $source
            ])
        ],
        [1, 0],
        ['integer', 'integer']
    );

这应该会生成类似于以下内容的 SQL:

CASE WHEN (Sales.isforeign = 0 AND Sales.source = 1) THEN 1 ELSE 0 END

See also

  • Cookbook > 数据库访问和 ORM > 查询生成器 > 使用 SQL 函数
  • Cookbook > 数据库访问和 ORM > 查询生成器 > 使用 SQL 函数 > Case 语句
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cakePHP 3 查询 ifnull 的相关文章

  • 字母数字验证在 jquery 中不起作用

    我的代码如下 包含所有必需的js文件 当我提交表单而不为 UserDetailAliasName 提供任何值时 表单不会提交并显示验证错误消息 此字段是必需的 但是如果我提交像 等值 表单会提交数据 我使用此表单从数据库搜索用户名 docu
  • CakePHP - 获取上次运行的查询

    我想获取 CakePHP 运行的最后一个查询 我无法在 core php 中打开调试 也无法在本地运行代码 我需要一种方法来获取最后一个 sql 查询并将其记录到错误日志中而不影响实时站点 该查询失败但正在运行 像这样的事情会很棒 this
  • CakePHP - 选择性 SSL

    如何对网站的某些部分强制使用 HTTPS 例如登录页面或注册页面 并使用 HTTP 来完成网站的其余部分 我最喜欢的强制转换为 https 的方法是将其作为 php 脚本中的第一件事 它可以在 Joomla 中运行 也可以在 CakePHP
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • Cakephp 自定义日期输入表单助手的输出

    I got echo this gt Form gt input birthdate array label gt Geburtsdatum true dateFormat gt DMY minYear gt date Y 70 maxYe
  • CakePHP 查找 - 按字符串到整数排序?

    我想使用 CakePHP 从数据库中提取照片数组 按照片标题排序 0 1 2 3 我的查询当前看起来像 ss photos this gt Asset gt find all array conditions gt array kind g
  • 比较 jdbc 中的结果集

    在我的java代码中 我获得了两个结果集rs1和rs2 如下所示 rs1 statement executeQuery select from tableA rs2 statement executeQuery select from ta
  • JPA 查询可以将结果作为 Java 映射返回吗?

    我们目前正在建设一个Map手动基于命名 JPA 查询返回的两个字段 因为 JPA 2 1 仅提供getResultList method NamedQuery name myQuery query select c name c numbe
  • CakePHP 中的 hasMan 简化为 hasOne

    基本上我在 CakePHP 中有以下模型 User id username Photo id user id path 我已经建立了以下关系 用户有很多照片 在一个屏幕上 我想列出用户 并在每个用户旁边显示随机照片 我尝试建立以下关系 用户
  • 子目录中的 CakePHP 控制器和模型

    你好 我想知道如何将我的组件和模型放在子目录中 假设我有一个 Web 应用程序 它有 3 个不同的区域 管理员 用户 开发人员 每个区域执行不同的操作并具有完全不同的界面 所以我希望管理员去http www site com admin h
  • ORMLite - join where 子句中的括号

    我想使用连接三个表QueryBuilder join and QueryBuilder joinor但我想在 where 子句中添加括号 如下所示 WHERE first table where AND second table where
  • 如何在索引视图中打印关联数据

    subjects this gt Subjects gt find all contain gt Users fields gt Users username Users email gt hydrate false gt toArray
  • 使用 CakePHP 为自定义模板链接创建分页

    我遵循分页链接的自定义模板 li class prev a href prev a li li a href class active 1 a li li a href 2 a li li a href 3 a li li a href 4
  • 包括 PHPUnit 在内的麻烦

    我想开始为我的代码编写测试 因此我使用以下命令安装了最新的 PHPUnit wget http pear phpunit de get phpunit phar chmod x phpunit phar mv phpunit phar us
  • Netbeans 6.8 中的 CakePHP 帮助程序自动完成

    谁能告诉我如何在 CakePHP 中 启用 CakePHP 的 Helper 自动完成功能 本质上是这样 例如 当我输入 form gt 它给了我一个清单 form的方法和变量 我读过了http bakery cakephp org art
  • 如何使用多个Auth组件?

    我使用用户模型将身份验证组件配置为 管理页面 但现在 我还想为客户端创建 配置身份验证 我尝试 重写 inialize This is in my ClientsController php public function initiali
  • Cakephp + 枚举支持:无法保存或选择枚举 0 和 1

    当我保存具有两个枚举字段的数据来管理消息状态时 即用户已读或未读 我使用枚举 1 0 来管理状态 1 gt 已读和 0 gt 未读 以下代码将保存消息 但在状态栏中保存空文件 data array message gt test messa
  • 如何删除 CakePHP 的尾随计时基准注释

    我已经解决这个可怕的问题几个小时了 尽我所能在谷歌上搜索 但仍然不幸找到解决方案 问题是 CakdPHP 渲染的每个页面都有一个默认的尾随计时基准注释 例如 如何删除最后一行 在此处输入代码 core php or anywhere els
  • 在 TinyMCE 中使用新的 iframe 嵌入代码嵌入 YouTube 视频

    我尝试使用旧的嵌入代码将 YouTube 视频添加到 TinyMCE 中 效果很好 一些用户可能没有意识到他们必须点击 YouTube 嵌入代码链接中的旧嵌入代码选项才能添加它 我想让用户变得更容易 并允许他们直接复制新的嵌入代码并将其粘贴
  • 防止 CakePHP 在实例化模型时自动连接数据库

    我公司的 DBA 有一个脚本 可以自动终止生产数据库上长时间运行的数据库连接和查询 我编写了一个在循环中运行的 CakePHP Shell 应用程序 有点像守护进程 需要定期进行数据库读取和写入 如果运行时间太长 维护脚本会关闭数据库连接

随机推荐

  • 具有扩展密钥用法的证书仅适用于 Firefox

    我尝试为多个域的服务器生成自签名证书 我在 v3 req 扩展中使用了 openssl 我使用此命令行生成具有多个域和扩展密钥用法的证书 openssl x509 req days 3650 in san domain com csr si
  • atexit 函数的目的是什么?

    我知道函数的地址何时传递给atexit功能 该函数被执行 include
  • 如何在 aws emr 上使用 -libjars?

    Stack Overflow 上有类似的问题 但没有一个回答这个问题 当按照以下链接时出现问题http grepalex com 2013 02 25 hadoop libjars 我们需要使用 export HADOOP CLASSPAT
  • 是否有 OutputDebugString 的 Unicode 替代品?

    OutputDebugString 是原生 ASCII 这意味着它在调用 ASCII 版本之前将输入的 Unicode 字符串转换为本地字符串OutputDebugStringA 有没有什么替代方案OutputDebugString 哪个支
  • .htaccess RewriteRule 有效,但地址栏中的 URL 没有变化?

    我一直在抓着头发试图解决这个问题 但没有任何效果 我有一个网页位于mysite com test php我想做一个简单的 URL 重写并将其更改为mysite com testRewrite 实现这一点的代码应该是 Options Foll
  • 如何将包导入 Scala REPL?

    如何将包导入 Scala 的 REPL 中 我正在尝试导入这个名为 funsets 的包 它有一个名为 FunSets 的对象 我尝试了几种变体import funsets and import funsets 等等 但它仍然没有导入包中的
  • Android后台服务和警报

    最近遇到一个问题Android 4 4杀死了我的应用程序Service and AlarmManager当设备进入睡眠模式时 START STICKY参数没有帮助 我尝试了很多东西 但没有任何效果符合我的需要 在我的任务管理器应用程序中 我
  • 在 OCaml 中打破循环

    我经常需要在 OCaml 中打破循环 至少有两种方法 by exception try for i 0 to 100 do if cond then raise BreakLoop done with BreakLoop gt by whi
  • SQL 按字母顺序排序,小于 10 的数字不带前导零

    是否可以按以下方式在 mySQL 中按字母顺序排序 A1 A2 A3 A5 A10 A11 A20 A23 A24 不幸的是 我收到的订单如下所示 请注意 A10 之前的任何数字如何没有组合在一起 A1 A10 A11 A12A2 A20
  • 由于 AccessibilityNodeInfo getChild 导致出现大量 ANR

    收到大量 ANR 报告 main prio 5 tid 1 可运行 组 主 sCount 0 dsCount 0 标志 0 obj 0x72e8a568 自我 0xe65da000 sysTid 20592 好 0 cgrp 默认调度 0
  • 对 Intellij 如何编译事物和处理资源感到困惑

    我对 Visual Studio 的 IntelliJ 非常陌生 而且我通常对资源文件在 IntelliJ 项目中的工作方式感到非常困惑 我阅读了一些有关将资源添加到类路径以及 IntelliJ 文档的问题和解答 但仍然感到困惑 我还有几个
  • 在 R Markdown 中使用 pandoc 和 bookdown 删除图标题中的冒号

    我正在更改 R Markdown 中图形标题的字体并使用bookdown和 pandoc 这样做 我的问题与以下问题密切相关 如何更改bookdown中的图形标题格式 我能够获得正确的图形编号 并且能够更改标题的 图 1 部分的格式 但是
  • 是否可以从 adf 连接到 databricks deltalake 表

    我正在寻找一种能够从 ADF 和其他 Azure 服务 如数据目录 连接到 Databricks deltalake 表的方法 我没有看到 ADF 数据源中列出的 databricks 数据存储 关于类似的问题 是否可以从 Azure 数据
  • 如何从jni端调用java方法?

    我在 jni 端完成了一些 C 代码函数 并且所有工作正常 public native String getMessage 函数将字符串从 jni 端返回到 java 端 它工作正常 所有其他 jni 代码也工作正常 但问题是如何在 jni
  • 使用 Python 刷新 Excel 外部数据

    我有一个 Excel 文件 我在其上运行 Python 脚本 Excel 文件具有需要在运行 Python 脚本之前刷新的外部数据连接 我指的功能在这里 我使用的是 Python 2 7 并且依靠 Pandas 进行大部分 Excel 数据
  • 如何重命名 DataFrame 中与嵌套 JSON 对应的字段

    我正在尝试使用以下方法处理移动应用程序中收到的 JSON 事件 如点击等 spark 1 5 2 有多个应用程序版本 并且事件的结构因版本而异 假设版本 1 具有以下结构 timestamp ev app appName XYZ appVe
  • 基于数据集的SSRS多值参数过滤器

    假设我在 SSRS 中有一个名为 DataSet1 的数据集 如下所示 CREATE TABLE data ID int Value int UserID varchar 2 INSERT INTO data VALUES 1 1000 A
  • 我什么时候应该使用 Moq 的 .As 方法?

    我们到底什么时候需要使用 AsMoq提供的方法 来自快速入门文档 implementing multiple interfaces in mock var foo new Mock
  • 为什么 SQLAlchemy 使用 sqlite 插入比直接使用 sqlite3 慢 25 倍?

    为什么这个简单的测试用例使用 SQLAlchemy 插入 100 000 行比直接使用 sqlite3 驱动程序慢 25 倍 我在现实应用程序中也看到过类似的减速情况 难道我做错了什么 usr bin env python Why is S
  • cakePHP 3 查询 ifnull

    我想知道防止结果集中出现空结果的最佳方法是什么 我正在使用 cake 3 5 13 我正在使用案例 例如 private function addCase isforeign source query this gt Sales gt fi