Thinkphp6中where条件中字段与字段比较条件的写法
2020-11-07 18:03
901 查看
今天进行系统测试的时候突然发现原来写好的效果不正常了,仔细排查了所有代码发现如下:
StorePink::where('id',1)->whereColumn('pinkAccount','<','people')->inc('pinkAccount')->update()
这段代码是作用是查找StorePink表中的列pinkAccount是否小于people,但是这段代码打印出来的语句是:
SELECT * FROM
StorePinkWHERE id='1' AND `pinkAccount < people LIMIT 1
ThinkPHP解析出来的时候把原来的字段people解析成了字符串了,所以该语句报错。
解决方法
1 正确的写法如下
大家注意看下两段代码where条件分别是:
where('pinkAccount','>','people') //这里字段与字段之间用 > 隔开,表示>后面的是字段值而非字段
where('pinkAccount',' > people') //这里把 > 与后面的字段写在了一起,即字段与字段之间的比较
2 使用关键词whereColumn(此方法在ThinkPHP6的用户手册中找到)
StorePink::where('id',$order['pink_id'])->whereColumn('pinkAccount','<','people')->inc('pinkAccount')->update()
生成的SQL语句如下:
SELECT * FROM
StorePinkWHERE (
pinkAccount>
people)
相关文章推荐
- php composer 常用命令
- PHP安全问题总结之有哪些?[图]
- php进阶学习-单例设计模式
- Hulu如何扩展InfluxDB使其支持每秒百万TPS
- PHP面试题
- 还在抱怨王者荣耀水晶难抽?PHP一文带你搞懂游戏中的抽奖算法
- php数字运算与格式化
- 六种php加密解密方法讲解
- Filter PHP 过滤器\验证器
- PHP代码审计03之实例化任意对象漏洞
- matplotlib画图教程,设置坐标轴标签和间距
- php计算时间段的最大连续天数
- vsftpd在被动模式下通过端口映射的方式被外网访问
- php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
- PhpStorm2020.1 安装 debug - Postman 调用的详细教程
- PHP大文件及断点续传下载实现代码
- 聊聊 PHP 8 新特性 Attributes
- VSCode+PHPstudy配置PHP开发环境的步骤详解
- 解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
- PHP连接SQL server数据库测试脚本运行实例