PHP系列 | TP6使用表达式设置数据 Db::raw('end_time')
模型或者Db无数据
使用以下语句查询记录
$liveList = Db::table('sys_live')
->field('id,begin_time,end_time,title')
->where('end_time','<>',0)
->where('begin_time','>','end_time')
->count();
查询结果为:0
通过fetchSql打印SQL语句
$liveList = Db::table('sys_live')
->field('id,begin_time,end_time,title')
->where('end_time','<>',0)
->where('begin_time','>','end_time')
->fetchSql()
->count();
打印SQL如下
SELECT COUNT(*) AS think_count FROM `sys_live` WHERE `end_time` <> 0 AND `begin_time` > end_time
注意:细心的朋友会发现开始时间是:`begin_time`(有双引号),而结束时间是:end_time(无双引号)
直接通过MySQL命令行,执行以上SQL语句是没问题的
mysql> SELECT COUNT(*) AS think_count FROM `sys_live` WHERE `end_time` <> 0 AND `begin_time` > end_time;
+-------------+
| think_count |
+-------------+
| 100 |
+-------------+
1 row in set (0.14 sec)
解决办法
查询条件使用表达式设置数据 Db::raw('end_time'),最后改写为以下查询
$liveList = Db::table('sys_live')
->field('id,begin_time,end_time,title')
->where('end_time','<>',0)
->where('begin_time','>',Db::raw('end_time'))
->count();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2017-04-22 openresty/1.11.2.1性能测试