Laravel where if 语句

2024-03-29

我在从数据库中选择时遇到了问题。 基本上我想要实现的是: 我有一个包含 3 列的表

type | number | date

我需要根据列(类型)执行操作

If(type = 1) then where number > 1 else where date today()

因此,如果类型等于 1,则应用 number 的位置,否则应用 date 的位置。有可能做这样的事情吗?用 Laravel Eloquent 可以做到吗? 谢谢。

原始查询和数据类型为:type = string number = integer date = timestamp (Y-m-d H:i:s)

Query

SELECT * FROM table_name
WHERE CASE WHEN type = days THEN date > now() ELSE number > 0 END

表架构

CREATE TABLE banners (
  id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  type varchar(255) COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  number int(10) unsigned NOT NULL DEFAULT '0',
  finish_at timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

有效的解决方案:

select * from `banners` 
where `banners`.`block_id` = 1 and `banners`.`block_id` is not null 
and IF (`type` = 'days', `finish_at` > now(), `number` > 0)

拉拉维尔方式:

ParentModel::banners()->whereRaw("IF (`type` = 'days', `finish_at` > now(), `number` > 0)")->get();

你可以像这样使用它

SELECT * FROM tablename WHERE IF (`type` = 1, `number` > 1,`date` = today())

使用 Laravel Eloquent 你可以像这样使用它

ModelName::whereRaw('IF (`type` = 1, `number` > 1,`date` = today())')->get();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel where if 语句 的相关文章

  • 如何通过 PHP 使用 AWS SQS/SNS 作为推送通知队列来执行繁重的处理任务?

    我有一台在机架空间上运行的服务器 它托管一个 PHP Web 应用程序 PHP Web 应用程序将接受表单提交 然后需要根据表单字段条目执行任务 该任务 我们将其称为生成元数据任务 需要相当多的处理时间 我想知道如何允许表单提交直接保存到数
  • 如何在没有 --prefer-source 的情况下使用 Composer 克隆存储库? (使用 Symfony 2)

    场景 我正在使用 Symfony 2 2 在我的所需包列表中也是我的 github 存储库之一 我们将其称为 TestLib 我知道我可以将 github url 定义为 Symfony 的composer json 中的附加存储库 以通过
  • sql 查询不适用于 order by

    这是我原来有效的查询 Select FROM story st sentences s speaker sp WHERE st lesson id 1 AND st speaker id sp speaker id AND st sente
  • bcrypt 中的盐的要点

    抱歉 如果这是一个愚蠢的问题 我只是想知道 bcrypt 中的盐有什么意义 我的意思是 如果您有以下用于从密码创建哈希的代码 function generateSalt salt 2a 13 salt salt 11111111111111
  • 如何对表中的每一行运行特定的sql查询?

    所以我的数据库中有两个表 它们看起来都是这样的 通讯 拨打电话 Timestamp FromIDNumber ToIDNumber GeneralLocation 2012 03 02 09 02 30 878 674 Grasslands
  • Bootstrap 3 无法在 Symfony3 中工作

    我刚刚开始学习 Symfony 3 我正在尝试使用 bootstrap 3 为我的表单设置主题 根据文档 http symfony com doc current cookbook form form customization html
  • 准备好的语句与存储过程

    如果您使用 php5 和 mysql5 使用存储过程比准备语句有实质性优势吗 我在某处读到 您可能无法从 mysql5 存储过程中获得实质性的性能提升 它们实际上并不是同一件事 对于存储过程 您的数据库逻辑驻留在数据库内部 如果多次调用准备
  • PHP - 搜索字符串中的特定单词数组并与可选的 + 或 - 匹配

    我需要在字符串中搜索特定单词并将匹配结果作为变量 我在数组中有一个特定的单词列表 names array Blue Gold White Purple Green Teal Purple Red drag Glowing looks to
  • 按任意顺序对 SQL 行输出进行排序?

    因此 在我的数据库中 我存储乐器名称 以及各种其他属性 比方说id是主键 并且name是唯一的密钥 在 PHP 脚本中 我按仪器类别选择项目 如下所示 name mysql real escape string POST name row
  • 如何从字符串创建对象?

    我尝试了下面的代码 dyn new className param1 param2 obj eval dyn 它编译但它是空的 如何在 PHP 中动态实例化对象 class ClassName obj new class arg1 arg2
  • 插入到 wordpress 数据库 - 调用成员函数 insert()

    我在通过我的插件将数据插入 WordPress 数据库时遇到问题 我的插件使用短代码来显示一个表单 从中进行一些计算 然后该信息应该被插入到数据库中 但我最终收到了此消息 我似乎无法让它工作 任何帮助将不胜感激 用于插入的插件代码 incl
  • mysql 部分索引、反向索引

    我有一张包含单词列表的表格 字 VARCHAR 16 我需要创建一个反向索引 IE 单词 apple 将索引为 elppa 单词 banana 将索引为 ananab 依此类推 另外 是否可以索引单词的一部分 例如 跳过第一个 最后一个或
  • 使用 wp_read_audio_metadata()

    我正在尝试从 WordPress 中的 mp3 文件获取一些元数据 特别是长度变量 这是我的一些代码 这里没有显示 但我已经包含了 wp admin includes media php 文件 当我查看我的页面时http beta open
  • cmd的字符集

    C Users Kolink gt php r echo C Users Kolink gt echo 正如你所看到的 一个程序输出一个 结果是 但使用echo命令给出所需的字符 并且 我可以配置 PHP 也许是脚本开头的某个命令 来输出正
  • 为什么Mysql在连接另一个表B时对表A使用全表扫描?

    我有一个表 A 和一个表 B 我正在从表 A 中选择信息 其中我只需要表 A 中的信息 其中表 B 联接表 A 我在联合列和 WHERE 子句上有索引 这是选择代码 SELECT FROM tableA INNER JOIN tableB
  • 如何获取MySQL中最后更新的行的ID?

    如何使用 PHP 获取 MySQL 中最后更新行的 ID 我找到了这个问题的答案 SET update id 0 UPDATE some table SET column name value id SELECT update id id
  • 如何通过python将python字典存储到mysql数据库中

    我试图通过将字典转换为字符串然后尝试插入来将以下字典存储到 mysql DB 中 但出现以下错误 如何解决这个问题 或者有其他方法将字典存储到 mysql DB 中吗 dic office component office Word2010
  • CentOs Php 和 MySql 配置

    我已经安装了 php 并运行了一段时间 但我开始从事一个连接到数据库 即 mysql 的项目 所以我安装了 mysql 5 1 73 现在当我使用它连接到数据库时线 dbhandle mysql connect hostname usern
  • 如何从 netbeans 远程调试 jar

    我正在尝试弄清楚如何调试远程运行的 jar 这是我的场景 我的 jar 将从 VPS 运行 这个jar基本上运行一个服务器 对于游戏 所以它还连接到 mysql 数据库 我使用 3 个 bat 文件启动服务器 如下所示 设置 CLASSPA
  • 在“等待初始通信数据包”时失去与 MySQL 服务器的连接

    我见过许多堆栈溢出问题 一些博客尝试了解决方法 但没有任何帮助 因此重新发布问题并提供更多详细信息 我看到 MySQL 和 Python 应用程序出现奇怪的行为 详细信息如下 1 我的应用程序在 MySQL 上运行得非常好 在许多平台上进行

随机推荐