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. Imgproc.findContours函数

    OpenCV里支持很多边缘提取的办法,可是如何在一幅图像里得到轮廓区域的参数呢,这就需要用到findContours函数,这个函数在OpenCV4Android的原型为: void org.openc ...

  2. lua三目运算符

    lua的类似三目运算符用法 一般化的Lua三目运算为:(a and {b} or {c})[1] local v = (a and {b} or {c})[1]如果a为true,则 v = b 如果a ...

  3. hdu 1460 完数

    注意:num1和num2的大小未知,需比较! 有两种方法: 法一:素数打印+素数分解(求因数和公式) #include<iostream> #include<cstring> ...

  4. Oracle 12c心得

    1.重新启动Listener后,远程客户端登录不了,只能全新启动Oralce服务才能正常,经分析,用Net Manager增加一个服务器的IP地址的监听. 执行 net start 监听服务名 再远程 ...

  5. jqgrid 加载时第一页面只显示多少条数据

    function initGrid() { localGrid = jQuery("#tbList"); localGrid.jqGrid({ data: localData, d ...

  6. UOJ #138. 【UER #3】开学前的涂鸦

    Description 红包是一个有艺术细胞的男孩子. 红包由于NOI惨挂心情不好,暑假作业又多,于是他开始在作业本上涂鸦. 一开始,他在纸上画了一棵 n 个节点的树.但是他觉得这样的画太简单了,体现 ...

  7. js 验证字符串是否全为中文

    js 验证字符串是否全为中文: function isChinese(str) { var reg = /^[\u4E00-\u9FA5]+$/; if(reg.test(str)){ return ...

  8. [android] 天气app布局练习(四)

    主要练习一下获取网络数据和解析xml MainActivity.java package com.example.weatherreport; import java.io.UnsupportedEn ...

  9. git必会必知

    1 前言 git前身是BitKeeper,但是他不是开源软件,不符合当时开源趋势,于是就会有了开源的git,git开发只用了十天时间.目前git是公司开发必不可少的一个工具,用于多人开发的分布式版本控 ...

  10. Coherence 简介

    Coherence是Oracle为了建立一种高可靠和高扩展集群计算的一个关键部件.   典型的使用Coherence的架构图是: Coherence被放在应用服务器和数据库服务器之间,从而解决通常应用 ...