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 表里面的一条数据;

//查询一条数据 
$sql = "SELECT id,name FROM tbl_user WHERE email='123@qq.com'  "
$users=Yii::app()->db->createCommand($sql)->queryRow(); 

其他辅助查询:

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 数组  
  }

       $users = Yii::app()->db->createCommand() 
           ->select('*'
           ->from('tbl_user'
           ->queryAll(); 

删除操作:(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()->update('yii_company_info',
                ["company_name"=>$company_name,"company_desc"=>$company_desc],
                "company_id=$company_id")->execute(); 


插入:
//使用user model添加数据 
$user = new Users(); //先实例化model
$user->setAttributes(array( 
        'username' => 'user1'
        'email' => '123@qq.com'
        'password'=>md5("abcsd5a4"), 
        'last_login'=>time() 
));
$user->save();
 Yii::$app->db->createCommand()->insert('tbl_user',array(  
           'username' => 'zhangsan',  
           'email' => 'zhangsan@zs.com'))->execute(); 

注:本文由王智磊(王大宝儿)整理编写,也参考借鉴了很多大神的笔记,分享代码,分享成功,欢迎各位交流和转载,转载请注明出处(博客园:王大宝儿)http://www.cnblogs.com/wangzhilei/

yii2.0数据库查询修改等方法的更多相关文章

  1. [moka学习笔记]yii2.0数据库查询的多种方法(未完待整理)

    方法一:(使用model) $modelCommunityMail = CommunityMail::find()->where(['com_id'=>$id])->all(); 方 ...

  2. Yii2.0 数据库查询 [ 2.0 版本 ]

    下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...

  3. Yii2.0 数据库查询方法

    User::find()->all();    此方法返回所有数据:    User::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子):    User:: ...

  4. Yii2.0数据库查询实例(三)

    常用查询: // WHERE admin_id >= 10 LIMIT 0,10 User::find()->])->offset()->limit()->all() / ...

  5. Yii2.0数据库查询的一些简单的操作

    User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子): User::find()->w ...

  6. yii2.0 数据库查询操作

    User::find()->all();    此方法返回所有数据:    User::findOne($id);   此方法返回 主键 id=1  的一条数据(举个例子):    User:: ...

  7. Yii2.0 Cookies机制和使用方法

    在实际的项目开发过程中,用到了Yii2.0 Cookies机制!但是遇到一个十分奇葩的问题,同一个YII框架,backend下Cookies能够正常存储于客户端,但是frontend始终不行.文章的最 ...

  8. yii2.0 访问控制器下的方法时出现 Object Not Found! 解决办法

    yii2.0  访问控制器下的方法时出现 Object Not Found! 时 可以查看(apache)  入口文件index.php 的同级有没有 .htaccess 文件 没有.htaccess ...

  9. YII2.0 数据库增删改查

    /*==================== dkhBaseModel 数据库增删改查方法 start ================================*/ //新增一条数据 publ ...

随机推荐

  1. SpagoBI系列----------[01]SpagoBI简介及安装步骤

    商务智能套件SpagoBI提供一个基于J2EE的框架用于管理BI对象如报表.OLAP分析.仪表盘.记分卡以及数据挖掘模型等的开源BI产品.它提供的BI管理器能 够控制.校验.验证与分发这些BI对象. ...

  2. Loadrunner—关联知识点

    一.关联定义 把脚本中某些写死的数据,转变成是撷取自服务器所发送的.动态的.每次都不一样的数据 二.什么时候需要做关联 要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程 过程说明: ...

  3. html的列表

    1.无序列表(最常用) 先看个例子:如下图: 使用的 html标签为  <ul>   <!--ul是UnorderList的缩写,意为无序列表:li是ListItem的缩写,列表项- ...

  4. 事务的编写规范与Hibernate绑定session

    一.事务的编写规范 1.事务的基本概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事 ...

  5. nginx基本配置说明

    nginx基本配置与参数说明                         1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...

  6. 查找正序排列的List中缺失的日期数据的一个算法

    Code: public List<DateTime> getMissDateData() { DateTime[] keys = { DateTime.Now.AddDays(-5), ...

  7. .netCore2.0 配置文件

    之前的asp.net 的配置文件都是xml格式,而.netCore的配置文件则采用Json键值对的格式来存储,具体获取如下 var config = new ConfigurationBuilder( ...

  8. JS 提交反斜杠\替换成正斜杠/

    js将字符串中所有反斜杠\替换成正斜杠/ 区分正斜杠与反斜杠: 正斜杠:http://.http紧跟着的斜杠,离手输入最近的斜杠,shift中间斜杠.45度角斜杠.正斜杠不需要转义 反斜杠:回车与空格 ...

  9. CXF - 拦截器获取调用方法

    没想到要弄这么一个东西. 起初只是想用interceptor记录一下webservice调用日志,后来却被要求在页面展示. 展示容易,但只是展示webservice的地址无法让用户从中明白什么. 那么 ...

  10. spring security入门

    1. Restful API和传统API的区别 用URL描述资源 用http描述方法行为,用http状态码描述结果 使用json交互数据 RESTful是一种风格,不是强制的标准 2. 使用sprin ...