ThinkPHP 条件是一个表里面的两个字段比较
今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询。
然后就做了下测试:
比如查询出 手机号就是微信号 的用户:
(1)首先,正常的sql语句应该是这样的:
SELECT `id`,`name`,`tel`,`weixin` FROM `user` WHERE `tel` = `weixin`
然后在thinkphp框架中测试:
(2)当where条件是字符串时,肯定是可以的:
M(‘user‘)->where('`tel`=`weixin`')->field('id,name,tel,weixin')->select();
字段不加反引号【`】也是可以的:
M(‘user‘)->where(‘tel=weixin‘)->field(‘id,name,tel,weixin‘)->select();
在thinkphp程序中,如果在数组中要查询同一张表里面两个字段值相同的数据,例如查询sku_no和sku_pre_no值相同的数据,可以采用下边的语句进行查询
use think\Db; // 确保引入Db类
if (!empty($sku_type)) {
if ($sku_type == 888) {
// 当sku_type=888时,查询sku_no等于sku_pre_no的数据
$condition[] = ['sku_no', '=', Db::raw('sku_pre_no')];
} else {
// 其他情况,查询sku_no不等于sku_pre_no的数据
$condition[] = ['sku_no', '!=', Db::raw('sku_pre_no')];
}
}
经过测试,可以正常查询