zoukankan      html  css  js  c++  java
  • yii2.0数据库查询修改等方法

    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/

  • 相关阅读:
    How To Use Google Logging Library (glog)
    段错误调试
    getline 使用
    remove_if筛选数组元素
    getline C++ Reference
    c++ Why remove_copy_if returns an empty vector? Stack Overflow
    About iClick
    哈工大社会计算与信息检索研究中心
    python的16进制和10进制间的转换
    毕业生 哈尔滨工业大学社会计算与信息检索研究中心 理解语言,认知社会
  • 原文地址:https://www.cnblogs.com/wangzhilei/p/6613524.html
Copyright © 2011-2022 走看看