yii---where or该如何使用

今天调试YII项目的时候,遇到一个奇葩的事儿,在调试 where or 查询的时候:调试语句是这样:

$str = static::find()->where(['or','username' => $username,'mobile' => $account]);        
echo "<br>";
echo $str->createCommand()->getRawSql();

很明显,我要到这个数据库里面找到 username等于$username,或者是mobile等于$account的数据。但是这样得到的SQL是:

SELECT * FROM `user` WHERE (dd_18314416390) OR (18314416390)

很明显是不对的,即使是放到MYSQL上执行,也是错的。

究其原因:yii where or 写错啦!

应该这样:

$str = static::find()->where(['or',['username'=>$username],['mobile' => $account]]);
echo "<br>";
echo $str->createCommand()->getRawSql();

这样生成的SQL是这样的:

SELECT * FROM `user` WHERE (`username`='dd_18314416390') OR (`mobile`='18314416390')

这样就对啦!

转载于:https://www.cnblogs.com/e0yu/p/10038976.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值