User::find()->where($condition)->one()/all();
where条件格式:
//sql: (type = 1) AND (status = 2) $condition = ['type' => 1,'status' =>2] //sql: (id IN (1,2,3)) AND (status = 2) $condition = ['id' => [1,2,3],'status' =>2] //sql: status IS NULL $condition = ['status' => null]
and: //sql: id = 1 AND id = 2 $condition = ['and','id=1','id=2'] //sql: type = 1 AND (id = 1 OR id = 2) $condition = ['and','type=1',['or','id=1','id=2']]
or: //sql: (type IN (7,8,9) OR (id IN (1,2,3))) $condition = ['or',['type' => [7,8,9]],['id' => [1,2,3]]]
not: //sql: NOT (attribute IS NULL) $condition = ['not',['attribute' => null]]
between: not between用法相同 //sql: id BETWEEN 1 AND 10 $condition = ['between','id',1,10]
in: not in用法类似
//sql: id IN (1,2,3)
$condition = ['in','id',[1,2,3]]
//sql: IN条件也适用于多字段
$condition = ['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]]
//也适用于内嵌sql语句
$condition = ['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]
like: //sql: name LIKE '%sample%' $condition = ['like','name','sample'] //sql: name LIKE '%sample1%' AND name LIKE '%sample2%' $condition = ['like','name',['sample1','sample2']] //sql: name LIKE '%sample' $condition = ['like','name','%sample',false]
exists: not exists用法类似
//sql: EXISTS (SELECT "id" FROM "user" WHERE "active" = 1)
$condition = ['exists',(new Query())->select('id')->from('user')->where(['active' => 1])]
注: //sql: id >= 10 $condition = ['>=','id',10] //sql: id!=10 $condition = ['!=','id',10]
本文档详细介绍了如何使用Yii2框架中的查询构建器来构造复杂的数据库查询。通过各种示例,展示了如何使用PHP语法来表达SQL逻辑,包括条件筛选、逻辑运算符使用、范围查询等。
1792

被折叠的 条评论
为什么被折叠?



