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. MySQL操作汇总

    这学期学习了数据库系统原理,做了实验,mark一记. T—SQL的简单查询.连接查询 (1)用SQL语句建库.建表并插入记录. 建库: 建表: 插入记录: 查看 (2)修改表结构,包括修改属性列的数据 ...

  2. 攻克数据库核心技术壁垒,实现百万级QPS的高吞吐

    CynosDB是腾讯云自研的新一代高性能高可用的企业级分布式云数据库.融合了传统数据库.云计算与新硬件的优势,100%兼容开源数据库,百万级QPS的高吞吐,不限存储,价格仅为商用数据库的1/10. C ...

  3. Firebird Case-Insensitive Searching 大小写不敏感查找

    Firebird 默认是大小写敏感,在检索的时候. 要想不敏感检索,两种方法: 1.where upper(name) = upper(:flt_name) 2.检索时指定字符集collation,例 ...

  4. wcf 登录认证 angular 认证重定向

    自定义认证管理器,分为两级:1.登陆认证.2.权限认证.权限主要是用户.角色.角色用户关系.功能(系统资源).角色功能关系,5部分决定用户的权限(视图). 两层认证都通过后,更新session的最新交 ...

  5. 2.VS2012为创建的类添加注释的模板

    在项目中给类添加注释的优点: 1.方便查看这个类是为了那些功能 2.是成员小组中的谁负责编写的 根据自己的vs的安装路径找到类模板的位置:D:\Program Files (x86)\Microsof ...

  6. sql server分页查询

    1.引言 在列表查询时由于数据量非常多,一次性查出来会非常慢,就算一次查出来了,也不能一次性显示给客户端,所以要把数据进行分批查询出来,每页显示一定量的数据,这就是数据要分页. 2.常用的数据分页方法 ...

  7. 建一个springboot项目

    1.打开 https://start.spring.io/ 新建一个maven的demo,这里选择的是1.5.18的版本 2.将自动生成的demo导入eclipse,直接选中File里的import, ...

  8. Heka 的 CMake 编译配置分析

    CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件.   CMakeLists.txt 的语法比较简单,由命令.注释和 ...

  9. SQL2008使用with求余额表,流水账方式

    1.先准备数据,将要求余额的表数据插入临时表 SELECT Serial, VoucherNum, SubjectNum, SubjectName, Direction, Amount INTO #T ...

  10. git自动更新网站代码

    1.实现过程在linux上安装git服务.创建源版本库.从源版本库克隆得到网站目录,然后利用git中的hooks机制,在git push推送代码到源版本库的时候,触发编写的shell脚本,更新网站目录 ...