thinkphp中where与whereOr混写的问题

  1. 目标
  2. 结论
  3. 实际中的错误操作

目标

1
SELECT * FROM `tp_user` WHERE `username` = 1 and (`level` = 1 OR `level` = 2)

结论

1
2
3
4
# 遇到whereOr和where组合链式操作,统一写到闭包里面,会自动加上括号
UserModel::where(function ($query) use ($where) {
$query->whereOr($where)
})->select();

实际中的错误操作

1
2
3
4
5
UserModel::where('username',1)
->whereOr([
['level', '=', 1],
['level', '=', 2]
])->select();

实际得到的语句

1
SELECT * FROM `tp_user` WHERE `username` = 1 OR `level` = 1 OR `level` = 2

参考:https://www.wodecun.com/blog/7987.html


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 harxingxing@163.com