今天使用 thinkphp5 写一段Sql查询数据库一个字段大于另外一个字段时发现Sql是正确的,但是实际查询结果不对
比如查询用户表xiadmin里面 积分score 大于 余额balance 的用户
XiadminModel::where('score', '>', 'balance')->select();
咋一看,没毛病。但是数据库存在数据也查询不出来
string(78) "SELECT * FROM `xiadmin` WHERE `score` > balance"
查看实际运行Sql ,也没毛病。。将sql放到数据库直接执行,数据可以正常查询,难道Tp出bug?不应该。翻看文档,发现是必须使用 raw 方法
修改查询方法
XiadminModel::where('score', 'exp', Db::raw('> balance'))->select();
查看Sql
SELECT * FROM `xiadmin` WHERE ( `score` > balance)
sql与实际运行结果正常