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();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tinywan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值