欢迎您的光临,本博所发布之文章皆为作者亲测通过,如有错误,欢迎通过各种方式指正。

文摘  Yii2 AR查询,Where多条件查询详解

PHP框架 本站 529 0评论

AR查询输出当前查询SQL
$query = $model->find()->where([’status’=>1]);
echo $query->createCommand()->getRawSql(); //输出sql语句


AR查询

$model->find()->all();    //返回所有数据;
$model->findOne($id);   //返回 主键 id=1  的一条数据;
$model->find()->select(['id','title'])->all();     //返回指定字段数据
$model->find()->where([’name’ => ’名称’])->one();   //返回 [’name’ => ’小伙儿’] 的一条数据;
$model->find()->where([’name’ => ’名称’])->all();   //返回 [’name’ => ’小伙儿’] 的所有数据;
$model->find()->orderBy(’id DESC’)->all();   //排序查询;
$model->findBySql(’SELECT * FROM user’)->all();  //用 sql  语句查询 user 表里面的所有数据;
$model->findBySql(’SELECT * FROM user’)->one();  //用 sql  语句查询 user 表里面的一条数据;
$model->find()->andWhere([’sex’ => ’男’, ’age’ => ’24’])->count(’id’);   //统计符合条件的总条数;
$model->find()->andFilterWhere([’like’, ’name’, ’名称’]); //用 like 查询 name 等于 小伙儿的 数据
$model->find()->one();    //返回一条数据;
$model->find()->all();    //返回所有数据;
$model->find()->count();    //返回记录的数量;
$model->find()->average();    //返回指定列的平均值;
$model->find()->min();    //返回指定列的最小值 ;
$model->find()->max();    //返回指定列的最大值 ;
$model->find()->scalar();    //返回值的第一行第一列的查询结果;
$model->find()->column();    //返回查询结果中的第一列的值;
$model->find()->exists();    //返回一个值指示是否包含查询结果的数据行;
$model->find()->batch(10);  //每次取 10 条数据
$model->find()->each(10);  //每次取 10 条数据, 迭代查询


Join关联

$_list = $model::find();
$_list->select(['f.id','f.dateline','n.itemid','n.title']);
$_list->from(News::tableName() . ' as f');
$_list->where(['f.userid'=>5]);
$_list->joinWith('newsTitle as n' , false, 'LEFT JOIN');

 

where查询条件总结


1. static where( $condition )
 其中参数 $condition类型为字符串或者数组1、字符串字符串是最简单的,直接按sql中的where条件写就可以,如

$condition = ’name=’zhidemy.com’ and age>10’;


2. 如果是数组的情况下,有两种格式的写法。

[’type’ => 1, ’status’ => 2] //生成 (type = 1) AND (status = 2)

[’id’ => [1, 2, 3], ’status’ => 2] //生成 (id IN (1, 2, 3)) AND (status = 2)

[’status’ => null]  //生成 status IS NULL


3. AND 把所有的操作数连接起来。

[’and’, ’id=1’, ’id=2’] //生成 id=1 AND id=2

如果某个运算数也是数组,那么会按如下格式转换为字符串

[’and’, ’type=1’, [’or’, ’id=1’, ’id=2’]] //生成 type=1 AND (id=1 OR id=2)

or和and类似,只不过是用OR来连接操作数。注意:这个方法不会对进行引用或者编码操作。


4. between 第一个操作数是列的名称,第二个和第三个操作数为范围的最小值和最大值。

[’between’, ’id’, 1, 10] //生成 id BETWEEN 1 AND 10

not between:和between相似。


5. in 第一个操作数为列或者DB表达式,第二个操作数为数组

[’in’, ’id’, [1, 2, 3]] //生成 id IN (1, 2, 3)

not in和in相似。注意:这个方法会对列进行引用,对数组中的值也会编码。


6. like 第一个操作数为列或者DB表达式,第二个操作数为字符串或者数组如

[’like’, ’name’, ’tester’] //生成 name LIKE ’%tester%’

如果值是数组的话,会生成多个like语句,并用AND来连接。如

[’like’, ’name’, [’test’, ’sample’]] //生成 name LIKE ’%test%’ AND name LIKE ’%sample%’

注意:这个方法会对列进行引用,对数组中的值也会编码。有时候你可能需要自己来处理%,那么可以用第三个参数:

[’like’, ’name’, ’%tester’, false] //生成 name LIKE ’%tester’

or like 和 like 相似,只是在第二个参数为数组的情况下用or来连接多个like 语句。

not like和 like 相似。

or not like 和or like相似。


转载请注明: ITTXX.CN--分享互联网 » Yii2 AR查询,Where多条件查询详解

最后更新:2018-10-18 18:18:28

赞 (2) or 分享 ()
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽