Yii1 的数据库操作整理
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 的数据库操作整理的更多相关文章
- SQL数据库操作整理
1.规范 ①关键字与函数名称全部大写: ②数据库名称.表名称.字段名称全部小写: ③SQL语句必须以分号结尾. 2.数据库操作 // 1. 创建数据库,其中[]表示可以省略 CREATE { DATA ...
- SQL不同服务器数据库之间的数据操作整理(完整版)
---------------------------------------------------------------------------------- -- Author : htl25 ...
- 转载-SQL不同服务器数据库之间的数据操作整理(完整版) .
---------------------------------------------------------------------------------- -- Author : htl25 ...
- Mysql数据库常用操作整理
0.说明 MySQL数据库是一个十分轻便的数据库管理系统,相比大型的数据库管理系统如Oracle,MySQL更拥有轻便.灵活.开发速度快的特色,更适用于中小型数据的存储与架构,被数以万计的网站采用.从 ...
- 常用的Mysql数据库操作语句大全
一.用户管理: 1.新建用户: >CREATE USER name IDENTIFIED BY 'ssapdrow'; 2.更改密码: >SET PASSWORD FOR name=PAS ...
- 数据库知识整理<一>
关系型数据库知识整理: 一,关系型数据库管理系统简介: 1.1使用数据库的原因: 降低存储数据的冗余度 提高数据的一致性 可以建立数据库所遵循的标准 储存数据可以共享 便于维护数据的完整性 能够实现数 ...
- 3.数据库操作相关术语,Oracle认证,insert into,批量插入,update tablename set,delete和truncate的差别,sql文件导入
1相关术语 语句 含义 操作 DML语句 (Data Manipulation Language) 数据库操作语言 insert update delete select DDL语言 (Date ...
- 常用Mysql数据库操作语句
用户管理: 1.新建用户: 语法msyql>CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username - 你将创建 ...
- C# SQLite 数据库操作
C# SQLite 数据库操作学习 运行环境:Window7 64bit,.NetFramework4.61,C# 7.0 参考: SQLite 官网 SQL As Understood By SQL ...
随机推荐
- 如何处理与开发有争议的Bug?
工作中,测试人员有时会遇到类似的问题:提交了一份软件缺陷报告,可由于某种原因,无论是开发人员还是开发经理就是不愿修改程序.应如何处理这类问题呢?我认为,当对报告出现分歧意见后,测试工程师应首先做如下 ...
- 设计模式01: Singleton 单例模式(创建型模式)
Singleton 单例模式(创建型模式) 动机(Motivation)当进行软件开发是会有这样一种需求:在系统中只有存在一个实例才能确保它们的逻辑正确性.以及良好的效率.这应该是类设计者的责任,而不 ...
- BZOJ 2301 Problem b(莫比乌斯反演+分块优化)
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...
- mysql 游标CURSOR
FETCH cursor_works INTO num,provinceIDs,cityIDs,SourceID; 定义的变量值必须与 游标中的字段不同,一一对应 DECLARE cursor_wor ...
- Sharepoint2013搜索学习笔记之设置外网内容源(四)
第一步,进入管理中心,点击管理应用程序,点击search service 应用程序进入到搜索管理配置页面,选择内容源 第二步,点击新建内容源,给内容源命名,在爬网内容类型中选网站,在爬网设置中选中仅对 ...
- c#读取数据库内容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 申请免费通配符证书(Let's Encrypt)并绑定IIS(转载)
本文转载自https://blog.csdn.net/qq_41608008/article/details/80491447 什么是 Let's Encrypt? 部署 HTTPS 网站的时候需要证 ...
- Linux服务器其中一个磁盘满了怎么办?在不做磁盘扩容的情况下,一个软连接就搞定。
适用环境要求:Linux系统及服务器.有管理员权限.存在多余空间的磁盘例如下图中"/home"在磁盘sda5中与"/"不属于同一块磁盘: 1.首先转移正在使用的 ...
- Unity性能优化专题---腾讯牛人分享经验
这里从三个纬度来分享下内存的优化经验:代码层面.贴图层面.框架设计层面. 一.代码层面. 1.foreach. Mono下的foreach使用需谨慎.频繁调用容易触及堆上限,导致GC过早触发,出现卡顿 ...
- Eclipse内存不足 增加eclipse的运行内存
自己解决的 三. 修改Run Configurations (此方法可行) 在代码上右键,依次点击“Run As ”-> “Run Configurations ”,在Arguments ...