User::find()->all(); 此方法返回所有数据; User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子); User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据; User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小伙儿'] 的所有数据; User::find()->orderBy('id DESC')->all(); 此方法是排序查询; User::findBySql('SELECT * FROM user')->all(); 此方法是用 sql 语句查询 user 表里面的所有数据; User::findBySql('SELECT * FROM user')->one(); 此方法是用 sql 语句查询 user 表里面的一条数据; User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id'); 统计符合条件的总条数; User::find()->andFilterWhere(['like', 'name', '小伙儿']); 此方法是用 like 查询 name 等于 小伙儿的 数据 User::find()->one(); 此方法返回一条数据; User::find()->all(); 此方法返回所有数据; User::find()->count(); 此方法返回记录的数量; User::find()->average(); 此方法返回指定列的平均值; User::find()->min(); 此方法返回指定列的最小值 ; User::find()->max(); 此方法返回指定列的最大值 ; User::find()->scalar(); 此方法返回值的第一行第一列的查询结果; User::find()->column(); 此方法返回查询结果中的第一列的值; User::find()->exists(); 此方法返回一个值指示是否包含查询结果的数据行; User::find()->batch(10); 每次取 10 条数据 User::find()->each(10); 每次取 10 条数据, 迭代查询
1. 简单的赋值
->where("id=:id", [ ':id' => 1 ])
上面的程式等同于 id=1
2.AND 查询
->where("id=:id and pack_name=:pack_name", [ ':id' => 1, ':pack_name' => 'com.famigo.sandbox' ])
或者
->where([ 'and', 'id=:id', 'pack_name=:pack_name' ], [ ':id' => 1, ':pack_name' => 'com.famigo.sandbox' ])
这两种程式等同于 id=1 AND pack_name='com.famigo.sandbox'
3.OR 查询
->where("id=:id or pack_name=:pack_name", [ ':id' => 1, ':pack_name' => 'com.famigo.sandbox' ])
或者
->where([ 'or', 'id=:id', 'pack_name=:pack_name' ], [ ':id' => 1, ':pack_name' => 'com.famigo.sandbox' ])
这两种程式等同于 id=1 OR pack_name='com.famigo.sandbox'
4.AND OR 混合查询
->where([ 'and', 'display=:display', [ 'or', 'id=:id1', 'id=:id2' ] ], [ ':display' => 1, ':id1' => 1, ':id2' => 2 ])
上面的程式等同于 (display=1) AND ((id=1) OR (id=2))
5.IN 查询
->where([ 'in', 'id', [1, 3, 5, 6] ])
上面程式等同于 id in (1, 3, 5, 6)
->where([ 'and', 'display=:display', 'lang=:lang', [ 'in', 'id', [1, 3, 5, 6] ] ], [ ':display' => 1, ':lang' => 2 ])
上面程式等同于 (display=1) AND (lang=2) AND (id IN (1, 3, 5, 6))
更为麻烦点的例子
->where([ 'or', [ 'and', 'display=:display1', [ 'in', 'id', [1, 3, 5, 6] ] ], [ 'and', 'display=:display2', [ 'in', 'id', [2, 4, 8, 9] ] ] ], [ ':display1' => 1, ':display2' => 2, ])
上面程式等同于 ((display=1) AND (id IN (1, 3, 5, 6))) OR ((display=2) AND (id IN (2, 4, 8, 9)))
6.NOT IN 查询
->where([ 'not in', 'id', [1, 2, 4, 3] ])
上面程式等同于 id NOT IN (1, 2, 4, 3)
复杂的使用方法和上述的 IN 是一样的,参考即可。
7.LIKE 查询
->where([ 'like', 'pack_name', '%sandbox%' ])
上面程式等同于 pack_name LIKE '%sandbox%'
->where([ 'like', 'pack_name', [ '%sandbox%', 'com.famigo%' ] ])
上面程式等同于 pack_name LIKE '%sandbox%' AND pack_name LIKE 'com.famigo%'
->where([ 'or like', 'pack_name', [ '%sandbox%', 'com.famigo%' ] ])
上面程式等同于 pack_name LIKE '%sandbox%' OR pack_name LIKE 'com.famigo%'
->where([ 'or not like', 'pack_name', [ '%sandbox%', 'com.famigo%' ] ])
上面程式等同于 pack_name NOT LIKE '%sandbox%' OR pack_name NOT LIKE 'com.famigo%'
->where([ 'not like', 'pack_name', [ '%sandbox%', 'com.famigo%' ] ])