1、根据条件查询一个集合

$objectResult=Post::model()->findAll($condition,$params);
$objectResult=Post::model()->findAll("username=:name",array(":name"=>$username));
$objectResult=RepairItem::model()->findAll("orderno=:orderno and orderpostid=:orderpostid",array(":orderno"=>$orderInfo['orderno'],':orderpostid'=>$orderInfo['orderpostid']));

$infoArr = NewsList::model()->findAll("status = '1' ORDER BY postid DESC limit 10 ");

2、根据主键查询一个集合,可以使用多个主键 findAllByPk

$objectResult=Post::model()->findAllByPk($postIDs,$condition,$params);
$objectResult=Post::model()->findAllByPk($postid,"name like :name and age=:age",array(':name'=>$name,'age'=>$age));
$objectResult=Post::model()->findAllByPk(array(1,2));

3、根据条件查询一个集合,可以是多个条件,把条件放到数组里面 findAllByAttributes

$objectResult=Post::model()->findAllByAttributes($attributes,$condition,$params);
$objectResult=Post::model()->findAllByAttributes(array('username'=>'jack'));

4、根据SQL语句查询一个数组 findAllBySql

$arrResult=Post::model()->findAllBySql($sql,$params);
$arrResult=Post::model()->findAllBySql("select * from tbl_post where username like :name",array(':name'=>'?%'));

5、根据主键查询出一个对象 eg:findByPk(1);

$arrResult=Post::model()->findByPk($postID,$condition,$params);
$arrResult=Post::model()->findByPk(1);

6、根据条件查询出一组数据,【可能是多个,但是他只返回第一行数据】

$arrRow=Post::model()->find($condition,$params);
$arrRow=Post::model()->find('username=:name',array(':name'=>'jack'));

7、根据条件查询一组数据,【可以是多个条件,把条件放到数组里面,查询的也是第一条数据】

$objectResult=Post::model()->findByAttributes($attributes,$condition,$params);
$objectResult=Post::model()->findByAttributes(array('username'=>'objectResult'));

8、根据SQL语句查询一组数据,【查询的也是第一条数据】

$objectResult=Post::model()->findBySql($sql,$params);
$objectResult=Post::model()->findBySql("select * from objectResult where username=:name",array(':name'=>'objectResult'));

9、通过CDbCriteria类find查询出一个对象

$criteria=new CDbCriteria; 
$criteria->select='username'; // 限制显示哪些字段 
$criteria->condition='username=:username';     //一个查询条件用aCondition.多条件用addCondition
$criteria->params=array(":username=>'jack'");
$criteria->order = "postsort DESC";
$criteria->limit = "3";
$post=Post::model()->find($criteria);

10、多条件查询的语句

$criteria = new CDbCriteria;     
$criteria->addCondition("postid=1"); //等同于 where postid = 1 
$criteria->addInCondition('postid', array(1,2,3,4,5)); //等同于 where postid IN (1,2,3,4,5,); 
$criteria->addNotInCondition('postid', array(1,2,3,4,5));//等同于 NOT IN (1,2,3,4,5,)
$criteria->addCondition('postid=1','OR');//等同于 OR而非AND 
$criteria->addSearchCondition('username', 'jack');//等同于 where name like '%jack%' 
$criteria->addBetweenCondition('postid', 1, 4);// 等同于 between 1 and 4
$criteria->compare('postid', 1);    //根据你的参数自动处理成addCondition或者addInCondition.
$criteria->compare('postid', array(1,2,3));   //数组就会调用addInCondition 
 
 
$criteria->select = 'postid,parentid,name'; //限制显示哪些字段 
$criteria->join = 'xxx'; //连接表 
$criteria->with = 'xxx'; //调用relations  
$criteria->limit = 10;    //取1条数据,如果小于0,则不作处理 
$criteria->offset = 1;   //两条合并起来,则表示 limit 10 offset 1,或者代表了。limit 1,10 
$criteria->order = 'xxx DESC,XXX ASC' ;//排序条件 
$criteria->group = 'group 条件'; 
$criteria->having = 'having 条件 '; 
$criteria->distinct = FALSE; //是否唯一查询

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

根据一个条件查询一个集合有多少条记录,返回一个int型数字
$intCount=Post::model()->count($condition,$params);
$intCount=Post::model()->count("username=:name",array(":name"=>$username));
 
根据SQL语句查询一个集合有多少条记录,返回一个int型数字
$intCount=Post::model()->countBySql($sql,$params);
$intCount=Post::model()->countBySql("select * from objectResult where username=:name",array(':name'=>'objectResult'));
 
根据一个条件查询查询得到的数组有没有数据,有数据返回一个true,否则没有找到
$boolExists=Post::model()->exists($condition,$params);
$boolExist=Post::model()->exists("name=:name",array(":name"=>$username));

四、添加的方法

$objectPost = new Post;       
$objectPost->username = $username;
$objectPost->password = $password;
或许
$objectPost->attributes = $arrNewData;

if($objectPost->save()){
    $intPostId= $objectPost->primaryKey; //生成主键id
    echo "添加成功";
}else{
    echo "添加失败";
}

五、修改的方法

Post::model()->updateAll($attributes,$condition,$params);
$count =Post::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1'));
if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
 
$rt = PostList::model()->updateAll(array('status'=>'1'),'staff_postid=:staff AND host_postid=:host',array(':staff'=>$staff_postid,':host'=>$host_postid));

Post::model()->updateByPk($pk,$attributes,$condition,$params);
$count=Post::model()->updateByPk(1,array('username'=>'jack','password'=>'jack'));

$count=Post::model()->updateByPk(array(1,2),array('username'=>'jack1','password'=>'jack1'),'username=:name',array(':name'=>'jack'));

if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
 
Post::model()->updateCounters($counters,$condition,$params);

$count=Post::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'jack'));

if($count > 0){
    echo "修改成功";
}else{
    echo "修改失败";
}
//array('status'=>1)代表数据库中的post表根据条件username='jack',查询出的所有结果status字段都自加1

六、删除的方法

//deleteAll
Post::model()->deleteAll($condition,$params);
$count = Post::model()->deleteAll('username=:name and password=:pass',array(':name'=>'jack',':pass'=>'jack'));
$count = Post::model()->deleteAll('postid in("1,2,3")');//删除postid为这些的数据
if($count>0){
    echo "删除成功";
}else{
    echo "删除失败";
}
 
//deleteByPk
Post::model()->deleteByPk($pk,$condition,$params);
$count = Post::model()->deleteByPk(1);
$count =Post::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'jack'));
if($count>0){
    echo "删除成功";
}else{
    echo "删除失败";
}}

七、执行原生的SQL语句

$sql = "select t.*, t1.userphone, t1.truename, t1.usermail from {{member_contact}} t left join {{member}} t1 on t.userid = t1.userid where t.contactid in (1,2,3)";
$arrRows=Yii::app()->db->createCommand($sql)->query();
foreach ($arrRows as $k => $v){
  
}

八、事务处理 【多表更新插入操作请使用事务处理】

$transaction = Yii::app()->db->beginTransaction();
try{
                $arrOrderProfile = array(
                    'orderid'     => $orderId,
                    'userip'      => $userip,
                    'contactid' => $contactId,
                    'updatetime'=> $now
                );
                $modelOrderProfile = new RepairOrderProfile();
                $modelOrderProfile->attributes = $arrOrderProfile;
                if(!$modelOrderProfile->save()){
                    throw new CException('维修订单生成失败,通知事务回滚');
                }
                $recordCounter = Counter::model()->updateByPk(1,array('max_id'=>$orderId));
                if($recordCounter <= 0 )
                    throw new CException('订单计数器更新失败,通知事务回滚');
                $transaction->commit(); //提交事务会真正的执行数据库操作
}catch(Exception $e){
    file_put_contents('action.log', $e->getCode().':'.$e->getMessage().'--'.date('Y-m-d H:i:s',time()),FILE_APPEND);
    $transaction->rollback();
   
}

Yii1 的数据库操作整理的更多相关文章

  1. SQL数据库操作整理

    1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...

  2. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  3. 转载-SQL不同服务器数据库之间的数据操作整理(完整版) .

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  4. Mysql数据库常用操作整理

    0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...

  5. 常用的Mysql数据库操作语句大全

    一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...

  6. 数据库知识整理<一>

    关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...

  7. 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入

     1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...

  8. 常用Mysql数据库操作语句

    用户管理: 1.新建用户: 语法msyql>CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username - 你将创建 ...

  9. C# SQLite 数据库操作

    C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQL ...

随机推荐

  1. 如何处理与开发有争议的Bug?

     工作中,测试人员有时会遇到类似的问题:提交了一份软件缺陷报告,可由于某种原因,无论是开发人员还是开发经理就是不愿修改程序.应如何处理这类问题呢?我认为,当对报告出现分歧意见后,测试工程师应首先做如下 ...

  2. 设计模式01: Singleton 单例模式(创建型模式)

    Singleton 单例模式(创建型模式) 动机(Motivation)当进行软件开发是会有这样一种需求:在系统中只有存在一个实例才能确保它们的逻辑正确性.以及良好的效率.这应该是类设计者的责任,而不 ...

  3. BZOJ 2301 Problem b(莫比乌斯反演+分块优化)

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  4. mysql 游标CURSOR

    FETCH cursor_works INTO num,provinceIDs,cityIDs,SourceID; 定义的变量值必须与 游标中的字段不同,一一对应 DECLARE cursor_wor ...

  5. Sharepoint2013搜索学习笔记之设置外网内容源(四)

    第一步,进入管理中心,点击管理应用程序,点击search service 应用程序进入到搜索管理配置页面,选择内容源 第二步,点击新建内容源,给内容源命名,在爬网内容类型中选网站,在爬网设置中选中仅对 ...

  6. c#读取数据库内容

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  7. 申请免费通配符证书(Let's Encrypt)并绑定IIS(转载)

    本文转载自https://blog.csdn.net/qq_41608008/article/details/80491447 什么是 Let's Encrypt? 部署 HTTPS 网站的时候需要证 ...

  8. Linux服务器其中一个磁盘满了怎么办?在不做磁盘扩容的情况下,一个软连接就搞定。

    适用环境要求:Linux系统及服务器.有管理员权限.存在多余空间的磁盘例如下图中"/home"在磁盘sda5中与"/"不属于同一块磁盘: 1.首先转移正在使用的 ...

  9. Unity性能优化专题---腾讯牛人分享经验

    这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...

  10. Eclipse内存不足 增加eclipse的运行内存

    自己解决的 三.    修改Run Configurations (此方法可行) 在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments  ...