public function getMinLimit () {
        $sql = "...";
        $result = yii::app()->db->createCommand($sql);
        $query = $result->queryAll();
 
        return array (
                $query [0] ['max'], 
        );
    }

$connection=Yii::app()->db; 
$sql="SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id";
$rows=$connection->createCommand ($sql)->query();
foreach ($rows as $k => $v ){
    echo $v['add_time'];
}

======================================== 事务

$db = Yii::app()->db;
$dbTrans = $db->beginTransaction();

$dbTrans->commit();
$dbTrans->rollback();

======================================== 

分页

一般写法:
$criteria = new CDbCriteria;
$count = DnOnline::model()->count($criteria);
$pages = new CPagination($count);               
$pages->pageSize = 5;
$pages->applylimit($criteria);
$model = DnOnline::model()->findAll($criteria);

记得控制器里有个函数paginate($itemCount,$pageSize=null,$pageVar=null)
CDB写法:

$criteria = new CDbCriteria;
$sql = "SELECT * FROM USER";
$model= Yii::app()->db->createCommand($sql)->queryAll();
$pages = new CPagination(count($model));               
$pages->pageSize = 4;
$pages->applylimit($criteria);
$model=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
$model->bindValue(':offset', $pages->currentPage*$pages->pageSize);
$model->bindValue(':limit', $pages->pageSize);
$model=$model->queryAll();

或者:

$criteria = new CDbCriteria;
      $connection=Yii::app()->db; 
      $sql="SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id ";
      $model= Yii::app()->db->createCommand($sql)->queryAll();
      $pages = new CPagination(count($model));               
      $pages->pageSize = 4;
      $pages->applylimit($criteria);

$model=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
      $model->bindValue(':offset', $pages->currentPage*$pages->pageSize);
      $model->bindValue(':limit', $pages->pageSize);
      $model=$model->queryAll();

========================================

一、查询数据集合 

1、$admin=Admin::model()->findAll ($condition,$params);
该方法是根据一个条件查询一个集合,如:  
findAll("username=:name",array(":name"=>$username));

2、$admin=Admin::model()->findAllByPk($postIDs,$condition,$params); 
findAllByPk($id,"name like ':name' and age=:age",array(':name'=>$name,'age'=>$age));    
该方法是根据主键查询一个集合,可以使用多个主键,如:  
findAllByPk(array(1,2));

3、$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params); 
该方法是根据条件查询一个集合,可以是多个条件,把条件放到数组里面,如:  
findAllByAttributes(array('username'=>'admin'));

4、$admin=Admin::model()->findAllBySql($sql,$params); 
该方法是根据SQL语句查询一个数组,如: 
findAllBySql("select *from admin whereusername=:name",array(':name'=>'admin'));

========================================

二、查询对像 的方法  

1、$admin=Admin::model()->findByPk ($postID,$condition,$params); 
 根据主键查询出一个对象,如:findByPk(1);

2、$row=Admin::model()->find ($condition,$params); 
 根据一个条件查询出一组数据,可能是多个,但是他只返回第一行数据,如: 
find('username=:name',array(':name'=>'admin'));

$userinfo=Userinfo::model()->find(array('condition'=>'user_id=:user_id','params'=>array(':user_id'=>$uid)));
      print_r($userinfo->user_id);

3、$admin=Admin::model()->findByAttributes ($attributes,$condition,$params); 
 该方法是根据条件查询一组数据,可以是多个条件,把条件放到数组里面,他查询的也是第一条数据,如: 
findByAttributes(array('username'=>'admin'));

4、$admin=Admin::model()->findBySql ($sql,$params); 
 该方法是根据SQL语句查询一组数据,他查询的也是第一条数据,如:  
findBySql("select *from admin whereusername=:name",array(':name'=>'admin'));

5、拼一个获得SQL的方法,在根据find查询出一个对象

$criteria=new CDbCriteria;  
$criteria->select='username'; // only select the 'title' column  
$criteria->condition='username=:username'; 
$criteria->params=array(':username=>'admin'); 
$post=Post::model()->find($criteria); // $params isnot needed  
 
========================================

三、查询个数,判断查询是否有结果  

1、$n=Post::model()->count ($condition,$params); 
 该方法是根据一个条件查询一个集合有多少条记录,返回一个int型数字,如  
count("username=:name",array(":name"=>$username));

2、$n=Post::model()->countBySql ($sql,$params); 
 该方法是根据SQL语句查询一个集合有多少条记录,返回一个int型数字,如 
countBySql("select *from admin whereusername=:name",array(':name'=>'admin'));

3、$exists=Post::model()->exists($condition,$params); 
 该方法是根据一个条件查询查询得到的数组有没有数据,如果有数据返回一个true,否则没有找到

$sql = "select count(*) as count  from " . $this->tableName() . " where user_id = $userId";
        $query = $result->queryAll();
        $pageSize =10;
        $count = $query [0] ['count'];
        $pageCount = ceil($count / $pageSize);
        return $pageCount;

======================================== 

四、添加的方法  
$admin=newAdmin;        
$admin->username=$username; 
$admin->password=$password; 
if($admin->save ()>0){ 
   echo "添加成功";  
}else{  
   echo "添加失败";  
}

$userLimit = new UserLimit();
$userLimit->item = 0.30000;
if($userLimit->insert (){

}

========================================

五、修改的方法 

$userLimitRet = UserLimit::model()->findByPk (array (
                                'user_id' => $userId, 
                                'category_id' => $v 
                        ));
$userLimitRet->order = $order;

if (! $userLimitRet->update ()) {
}

$userAmount=userAmount::model()->findByPk ($userId);
$userAmount->credit=Yii::app()->request->getParam('credit',10000);
$ret = $userAmount->save ();

1、Post::model()->updateAll ($attributes,$condition,$params); 
 $count =Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1')); 
if($count>0){  
   echo "修改成功";  
}else{  
   echo "修改失败";  
}

$ret = $this->updateAll (array (
                                'set' => $Set
                        ), " user_id in ( " . $userIds . " ) and category_id = " . $categoryId);

if($ret){
    return true;
}else {
    return false;
}

2、Post::model()->updateByPk ($pk,$attributes,$condition,$params); 
 $count =Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); 
$count =Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin'));
if($count>0){  
   echo "修改成功";  
}else{  
   echo "修改失败";  
}  
$pk代表主键,可以是一个也可以是一个集合,$attributes代表是要修改的字段的集合,$condition代表条件,$params传入的值

3、Post::model()->updateCounters ($counters,$condition,$params); 
 $count=Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); 
if($count>0){  
   echo "修改成功";  
}else{  
   echo "修改失败";  
}  
array('status'=>1)代表数据库中的admin表根据条件username='admin',查询出的所有结果status字段都自加1 
 
========================================

六、删除的方法  
1、Post::model()->deleteAll($condition,$params); 
 $count = Admin::model()->deleteAll('username=:nameandpassword=:pass',array(':name'=>'admin',':pass'=>'admin')); 
         $id=1,2,3  
         deleteAll('id in(".$id.")');删除id为这些的数据 
if($count>0){  
   echo "删除成功";  
}else{  
   echo "删除失败";  
}  
 2、Post::model()->deleteByPk($pk,$condition,$params); 
$count = Admin::model()->deleteByPk(1); 
$count =Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); 
if($count>0){  
   echo "删除成功";  
}else{  
   echo "删除失败";  
}

七、like模糊查询

  1. var $username='张三';
  2. var $email ='qq@qq.com';
  3. var $mobile =18888888888;
  4.  
  5. $result=User::find()->where([
  6. 'status'=>1,
  7. ])->andwhere([
  8. 'or',
  9. ['like','username',$username],
  10. ['like','email',$email],
  11. ['like','mobile',$mobile],
  12. ])->all();

  

  1. $rows = (new \yii\db\Query())
  2. ->from('admin')
  3. ->where("status=:status and (username like :keyword or `name` like :keyword )")
  4. ->addParams([':status'=>1,':keyword'=>'%陈%'])
  5. ->all();

  

  1. Customer::find()->andFilterWhere(['like','name','洋']);

  

Yii 框架里数据库操作详解-[增加、查询、更新、删除的方法 'AR模式']的更多相关文章

  1. Yii 框架里数据库操作详解

    增:1 第一种 $post=new Post; $post->title='sample post'; $post->content='content for the sample pos ...

  2. windows phone 8.1开发SQlite数据库操作详解

    原文出自:http://www.bcmeng.com/windows-phone-sqlite1/ 本文小梦将和大家分享WP8.1中SQlite数据库的基本操作:(最后有整个示例的源码)(希望能通过本 ...

  3. yii2 数据库操作详解(转载)

    开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的" Web 应用是 config/web.php),DSN( Data Source Name ...

  4. Yii数据库操作增删改查-[增加\查询\更新\删除 AR模式]

    在Yii的开发中常常需要去使用Yii的增删改查方法,这些方法又可以多次变化和组合,带来全方位的实现对数据库的处理,下面对这些方法做一些简单的整理和梳理,有遗漏或是BUG,敬请指出.灰常感谢!!! 一. ...

  5. JMeter数据库操作详解

    Jmeter提供了JDBC连接的插件,通过执行SQL语句的java API,实现对数据库的访问和查询,同时可以操作一次向数据库插入上百条上千条数据. 一.安装驱动包 将需要连接JDBC的jar包放入j ...

  6. android 数据库操作详解

    请看郭大神的八篇专栏,包含sql语句  android封装的databasehelper 和郭大神自己的LitePal  三种使用详解 http://blog.csdn.net/column/deta ...

  7. yii 核心类classes.php详解(持续更新中...)

    classes.php在yii运行的时候将被自动加载,位于yii2文件夹底下. <?php /** * Yii core class map. * * This file is automati ...

  8. JDBC连接mysql数据库操作详解

    1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  9. django 数据库操作详解

    Django配置使用mysql数据库 修改 settings.py 中的 DATABASES  注意:django框架不会自动帮我们生成mysql数据库,所以我们需要自己去创建. DATABASES ...

随机推荐

  1. 系统间通信(4)——IO通信模型和JAVA实践 中篇

    4.多路复用IO模型 在"上篇"文章中,我们已经提到了使用多线程解决高并发场景的问题所在,这篇文章我们开始 4-1.现实场景 我们试想一下这样的现实场景: 一个餐厅同时有100位客 ...

  2. bzoj4264: 小C找朋友

    hash大法好 #include <iostream> #include <cstdio> #include <cstring> #include <cmat ...

  3. bzoj 1257

    商最多有sqrt(n)个. #include<iostream> #include<cstdio> #include<cstring> #include<al ...

  4. C#图像处理(各种旋转、改变大小、柔化、锐化、雾化、底片、浮雕、黑白、滤镜效果)

    http://blog.csdn.net/jiangxinyu/article/details/6222322/ 转载自CSDN

  5. TCP/IP详解 笔记十二

    简单文件传送协议 TFTP 1)         初衷是为了引导无盘系统 2)         使用UDP 3)         代码都能适合只读存储器 无盘主机通过RARP获得ip地址后进行一个TF ...

  6. RabbitMQ配置文件

    配置文件Config 在Web的可视化管理界面中可以看到一些文件的路径 比如 Config文件的地址 数据库存放的文件夹 log文件的地址 进入到这个文件夹会发现有这些文件,其中example是con ...

  7. 偶然发现的Unity3d,两点之间的距离计算。

    无意间查了一下Vector3的API,发现了一个方法. magnitude  Returen the length of vector(Read Only). 然后就试了一下这个方法. Vector3 ...

  8. 加州大学伯克利分校Stat2.2x Probability 概率初步学习笔记: Midterm

    Stat2.2x Probability(概率)课程由加州大学伯克利分校(University of California, Berkeley)于2014年在edX平台讲授. PDF笔记下载(Acad ...

  9. UVA 10679 I Love Strings

    传送门 题目大意 给定文本串$S$和若干模式串$\{T\}$, 对每个模式串$T$, 询问$T$是否为$S$的子串. Solution 裸的AC自动机, 也可以用后缀数组做. P.S. 这题数据很弱, ...

  10. AngularJs angular.uppercase、angular.lowercase、angular.fromJson、angular.toJson

    angular.uppercase 将指定的字符串转换成大写 格式:angular.uppercase(string); string:被转换成大写的字符串. 使用代码: var str = &quo ...