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. 如何使标签a处于不可用状态

    今天做项目的时候突然发现a标签下用disabled无法使它的点击事件失效(貌似ie下可以,没有测试过), 首先说一下项目要求,点击a标签(点击之后以防多次快速点击,这里需要点击后使标签a实现),触发a ...

  2. JavaScript弹出层

    1.这个弹出层就是一个DIV 2.看需要什么效果 2.1.如果是仅仅需要弹出层,而背后的网页同样可以点击,那么只需要一个DIV即可,效果如图: 2.2.需要一层透明背景,而后面的网页只能看不能点,效果 ...

  3. UML关系

    UML关系详解 1.关联关系(association) 连接模型元素及链接实例,用一条实线来表示 2.依赖关系(dependency) 表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示 ...

  4. android 生成随机数

    /**  * 随机数.字母 工具类  * Created by admin on 2017/2/20.  */ public class RandomUntil {     /**      * 生成 ...

  5. 如何通过 PHP 获取 Azure Active Directory 令牌

    在调用 Azure Rest API 时,如果是属于 Azure Resource Manager 的 API,则需要使用 Azure Active Directory (Azure AD)认证获取令 ...

  6. servlet开发(二)之servlet的线程安全问题

    之所以考虑线程安全问题,是因为引入了多线程.多线程指的是这个程序(一个进程)运行时产生了不止一个线程.如果不考虑多线程的话,程序执行只有一条路径,就像人在敲代码的时候只能敲代码,不能戴上耳机听歌.引入 ...

  7. swoole安装

    转自:http://blog.csdn.net/u014207604/article/details/49926207 Windows 下安装 swoole 具体步骤: Swoole,原本不支持在Wi ...

  8. 4、springboot之全局异常捕获

    1.新建一个springboot项目 添加一个全局异常的类 import org.springframework.web.bind.annotation.ControllerAdvice; impor ...

  9. python打开文件常见错误及解决办法

    打开文件注意事项: 打开文件时需要,填写正确的路径,需要配置与文件相同的编码方式打开位机例如’utf-8‘,需要以特定 的模式打开文件 r, w,r+,w+,rb,wb,a, a+,ab等模式 f.o ...

  10. css-布局定位

    position:  ** 属性值 - absolute: *** 将对象从文档流中拖出 *** 可以是top.bottom等属性进行定位 - relative: *** 不会将对象从文档流中拖出 * ...