Yii框架下的where条件查询

6 篇文章 0 订阅

条件查询

$customers = Customer::find()->where($cond)->all(); 

$cond就是我们所谓的条件,条件的写法也根据查询数据的不同存在差异,那么如何用yii2的方式来写查询条件呢?

[[简单条件]]

[php]  view plain  copy
  1. // SQL: (type = 1) AND (status = 2).  
  2. $cond = ['type' => 1, 'status' => 2]   
  3.   
  4. // SQL:(id IN (1, 2, 3)) AND (status = 2)  
  5. $cond = ['id' => [1, 2, 3], 'status' => 2]   
  6.   
  7. //SQL:status IS NULL  
  8. $cond = ['status' => null]  

[【and】]:将不同的条件组合在一起,用法举例:

[php]  view plain  copy
  1. //SQL:`id=1 AND id=2`  
  2. $cond = ['and''id=1''id=2']  
  3.   
  4. //SQL:`type=1 AND (id=1 OR id=2)`  
  5. $cond = ['and''type=1', ['or''id=1''id=2']]  
  6.   
  7. //SQL:`type=1 AND (id=1 OR id=2)` //此写法'='可以换成其他操作符,例:in like != >=等  
  8. $cond = [  
  9.     'and',  
  10.     ['=''type', 1],  
  11.     [  
  12.         'or',  
  13.         ['=''id''1'],  
  14.         ['=''id''2'],  
  15.     ]  
  16. ]  

[[or]]:

[php]  view plain  copy
  1. //SQL:`(type IN (7, 8, 9) OR (id IN (1, 2, 3)))`  
  2. $cond = ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]  

[[not]]:

[php]  view plain  copy
  1. //SQL:`NOT (attribute IS NULL)`  
  2. $cond = ['not', ['attribute' => null]]  

[[between]]: not between 用法相同

[php]  view plain  copy
  1. //SQL:`id BETWEEN 1 AND 10`  
  2. $cond = ['between''id', 1, 10]  

[[in]]: not in 用法类似

[php]  view plain  copy
  1. //SQL:`id IN (1, 2, 3)`  
  2. $cond = ['in''id', [1, 2, 3]] or $cond = ['id'=>[1, 2, 3]]  
  3.   
  4. //IN条件也适用于多字段  
  5. $cond = ['in', ['id''name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]]  
  6.   
  7. //也适用于内嵌sql语句  
  8. $cond = ['in''user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]  

[[like]]:

[php]  view plain  copy
  1. //SQL:`name LIKE '%tester%'`  
  2. $cond = ['like''name''tester']  
  3.   
  4. //SQL:`name LIKE '%test%' AND name LIKE '%sample%'`  
  5. $cond = ['like''name', ['test''sample']]  
  6.   
  7. //SQL:`name LIKE '%tester'`  
  8. $cond = ['like''name''%tester', false]  

[[exists]]: not exists用法类似

[php]  view plain  copy
  1. //SQL:EXISTS (SELECT "id" FROM "users" WHERE "active"=1)  
  2. $cond = ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]  

此外,您可以指定任意运算符如下

[php]  view plain  copy
  1. //SQL:`id >= 10`  
  2. $cond = ['>=''id', 10]  
  3.   
  4. //SQL:`id != 10`  
  5. $cond = ['!=''id', 10]  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值