yii2.0学习有一段时间了,给大家分享一下一些简单的查询等如何操作。
查询:(这里最前面的Test是引用的模型名)
Test::find()->all();此方法返回所有数据;
Test::findAll(['status'=>1]);
这些查询出来是对象形式,但是一般转换成数组格式:
Test::find()->asArray()->all(); 加上asArray()就取得数组形式的数据了,下面的自行添加。
Test::findOne($id);此方法返回主键id=1的一条数据(举个例子);
条件查询:where 、andwhere 、 orwhere
Test::find()->where(['name'=>小明'])->one();此方法返回['name'=>'小明']的一条数据;
Test::find()->where(['name'=>'小明'])->all();此方法返回['name'=>'小明']的所有数据;
Test::find()->andWhere(['sex'=>'男','age'=>'24'])->count('id');统计符合条件的总条数;
Test::find()->where(['and','id=1','id=2'])->all(); //id=1 and id=2
Test::find()->where(['or','id=1','id=2'])->all(); //id=1 or id=2
sql语句查询:
Test::findBySql('SELECT * FROM user')->all();此方法是用sql 语句查询user 表里面的所有数据;
Test::findBySql('SELECT * FROM user')->one();此方法是用sql 语句查询user 表里面的一条数据;
其他辅助查询:
Test::find()->one();此方法返回一条数据;
Test::find()->all();此方法返回所有数据;
Test::find()->count();此方法返回记录的数量;
Test::find()->average();此方法返回指定列的平均值;
Test::find()->min();此方法返回指定列的最小值;
Test::find()->max();此方法返回指定列的最大值;
Test::find()->scalar();此方法返回值的第一行第一列的查询结果;
Test::find()->column(); 此方法返回查询结果中的第一列的值;
Test::find()->exists(); 此方法返回一个值指示是否包含查询结果的数据行;
Test::find()->batch(10); 每次取 10 条数据
Test::find()->each(10); 每次取 10 条数据, 迭代查询
支持防sql注入:
$sql="select * from test where id=:id";
① $result=Test::findBySql($sql,array(":id"=>1))->all();
② $result=Yii::$app->db->createCommand($sql) //这种方法一般不用
->bindValue(':id',1) //绑定参数
->queryOne();
模糊查询:(title like "%tit%" and title like "%abc%")
$result=Test::find()->where(['like','title',['tit','abc']])->all(); //%会自动添加
范围查询:(以id为例)
$result=Test::find()->where(['>','id',0])->all(); //查询 id 大于 0 的
$result=Test::find()->where(['between','id',1,2])->all(); //查询 id 1-2 的
排序查询:
$result=Test::find()->where($condition)->asArray()->orderBy('id DESC')->all(); 根据条件以数组形式返回所有数据,并根据ID倒序
批量查询:
①
foreach(Test::find()->batch(1) as $tests){ //batch 是指每次拿一条(可任意指定)。放进 $tests 数组中
//操作 $tests 数组
}
②
删除操作:(delete)
①
$result=Test::find()->where(['id'=>1])->delete();
$result[0]->delete(); //也可以删除其中的一项;
②
$result=Test::deleteAll('id>:id',array("id"=>0)); //删除 id 大于 0的。不写参数删除全部,支持占位符形式
③(带条件删除)
$connection->createCommand()
->delete('tbl_user','status = 0')
->execute();
④(使用sql删除)
$connection ->createCommand('DELETE FROM tbl_user WHERE userid=:userid')
->execute();
⑤(查找并删除)
$user = User::findOne(2);$user->delete();
// 输出语句
// DELETE FROM `tbl_user` WHERE `id`='2'
删除多个:deleteAll()
①
Test::deleteAll('status = :status AND age > :age', [':age' => 20, ':status' => 'active']); //DELETE FROM `tbl_user`where age>20 and status='active'
②Test::deleteAll([ 'and', 'type = :type_id',['not in', 'usercategoryid', $categoriesList]],[ ':type_id' => 2]); //DELETE FROM `tbl_user` WHERE (type = 2) AND (`usercategoryid` NOT IN (1, 2, 3))
③
Yii::app()->db->createCommand()->delete('tbl_user','id=:id',array(':id' => 2));
修改:(先查询后修改)
①
$result=Test::find()->where(['id'=>1])->one(); //返回一条
$result->title="title4"; //要修改的字段
$result->save(); //保存数据
②
//修改
插入:
Yii::$app->db->createCommand()->insert('tbl_user',array(
注:本文由王智磊(王大宝儿)整理编写,也参考借鉴了很多大神的笔记,分享代码,分享成功,欢迎各位交流和转载,转载请注明出处(博客园:王大宝儿)http://www.cnblogs.com/wangzhilei/