本篇文章会详细介绍and、or、between、in、like在where方法中的使用方法和举例。


and


​​// 我们要查询id大于1并且小于3的数据​​        


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'and'​​ ​​ , ​​ ​​'id > 1'​​ ​​ , ​​ ​​'id < 3'​​ ​​])->all();​​


​​// 或者用以下方式,更为安全​​


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'and'​​ ​​ , [​​ ​​'>'​​ ​​ , ​​ ​​'id'​​ ​​ , 1] , [​​ ​​'<'​​ ​​ , ​​ ​​'id'​​ ​​ , 3]])->all();​​


​​// 往往我们会处理比这更复杂的sql​​


​​// 假如我们要查询name是王五 并且 id大于1或者id小于3的数据​​


​​$userInfo​​ ​​ = User::find()->where(​​


​​[​​ ​​'and'​​ ​​ , ​​


​​[​​ ​​'='​​ ​​ , ​​ ​​'name'​​ ​​ , ​​ ​​'王五'​​ ​​] , ​​


​​[​​ ​​'or'​​ ​​ , ​​


​​[​​ ​​'='​​ ​​ , ​​ ​​'id'​​ ​​ , 1] , ​​


​​[​​ ​​'='​​ ​​ , ​​ ​​'id'​​ ​​ , 3]​​


​​]​​


​​])->asArray()->all();​​


​​// 注:asArray()方法会将数据以数组的方式显示​​



or


​​// 我们要查询id等于1或者id等于3的数据​​        


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'or'​​ ​​ , ​​ ​​'id = 1'​​ ​​ , ​​ ​​'id = 3'​​ ​​])->all();​​


​​// 我们同样可以使用以下方式​​


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'or'​​ ​​ , [​​ ​​'='​​ ​​ , ​​ ​​'id'​​ ​​ , 1] , [​​ ​​'='​​ ​​ , ​​ ​​'id'​​ ​​ , 3]])->all();​​


​​// 假如我们要查询id在4,8,9范围内 或者 id在1,2,3范围内呢?​​


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'or'​​ ​​ , [​​ ​​'id'​​ ​​ => [4,8,9]] , [​​ ​​'id'​​ ​​ => [1,2,3]]])->all();​​



between

​​// 我们要查询id在1到10的范围之内​​        


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'between'​​ ​​ , ​​ ​​'id'​​ ​​ , 1 , 10])->all();​​




in

​​// 我们要查询id在1、2、3的范围内​​        


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'in'​​ ​​ , ​​ ​​'id'​​ ​​ , [1,2,3]])->all();​​




like

​​// 我们要查询name中包含“张”这个字符的数据​​        


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'like'​​ ​​ , ​​ ​​'name'​​ ​​ , ​​ ​​'张'​​ ​​])->all();​​


​​// 我们假如要通配name中包含“张”这个字符,而且还得包含“三”这个字符​​


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'like'​​ ​​ , ​​ ​​'name'​​ ​​ , [​​ ​​'张'​​ ​​ , ​​ ​​'三'​​ ​​]])->all();​​


​​// 我们假如只需要通配左边即可​​


​​$userInfo​​ ​​ = User::find()->where([​​ ​​'like'​​ ​​ , ​​ ​​'name'​​ ​​ , ​​ ​​'%三'​​ ​​ , false])->all();​​


​​// 所以,右边也是同样​​