<?php
//yii1.0 curd简单写法
//查询
Yii::app()->db->createCommand($sql)->queryAll();//查询所有行数据
​Yii::app()->db->createCommand($sql)->queryRow();//查询第一行数据
​Yii::app()->db->createCommand($sql)->queryColumn();//查询第一列数据​
​Yii::app()->db->createCommand($sql)->queryScalar();//查询第一行的第一字段 //执行
​Yii::app()->db->createCommand($sql)->execute();//创建、更新、删除,的执行 //插入(增)
$result = Yii::app()->db->createCommand()->insert('test', array(
'name' => 'admin',
'ctime' => time()
)); //修改
$result = Yii::app()->db->createCommand()->update('test', array(
'name' => 'admin_update'
),'id=:id',array(':id'=>$id)); //查
$result = Yii::app()->db->createCommand()->select('id,name')
->from('test')
->where('id=:id',array(':id'=>$id))
->queryRow(); //删除
$result =Yii::app()->db->createCommand()->delete('test','id=:id',array(':id'=>$id)); //修改字段自增加1
$updareRet = Yii::app()->db->createCommand()->update('test', array(
'notify_times' => new CDbExpression('notify_times+1')
),'id=:id',array(':id'=>$id)); //二维对象转数组
$arrayRet=array();
foreach($result as $model){
$arrayRet[]= $model->attributes;
}
         //判断查询条件
$paramOne = 1;
$paramTwo = 'admin';
if ($paramOne ==1) {
$where[] = "id=" . $paramOne;
}
if ($paramTwo) {
$where[] = "name=" . $paramTwo;
} $condition = '';
if ($where) {
$condition = implode(' and ', $where);
} $result = Yii::app()->db->createCommand()->select('*')->from('sdk_test');
$result = $result->where($condition);
$result = $result->queryAll();
YII 1.0 常用CURD写法-ORM

======================================== 常规原生sql写法

$sql="select u.account,i.* from sys_user as u left join user_info as i on u.id=i.user_id";  //sql语句
$ret=Yii::app()->db->createCommand ($sql)->queryAll();//执行方法 ======================================== 事务 $db = Yii::app()->db;
$dbTrans = $db->beginTransaction(); //开始事物
$dbTrans->commit(); //提交
$dbTrans->rollback(); //回滚 ======================================== 分页 一般写法:适合建模后单表查找和分页
$criteria = new CDbCriteria; //实例化CDbCriteria操作数据类
$count = Test::model()->count($criteria); //统计test模型数量(需要建模型)
$pages = new CPagination($count); //实例化CPagination操作分页类,传入统计总数
$pages->pageSize = 5; //设置每页数量
$pages->applylimit($criteria); //分页数量设定和查询
$model = Test::model()->findAll($criteria); //查找数据 记得控制器里有个函数paginate($itemCount,$pageSize=null,$pageVar=null)
原生操作数据写法:
$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(); ======================================== 一、查询数据集合(二维数据) 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=Text::model()->find($criteria); ======================================== 三、查询个数,判断查询是否有结果 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,否则没有找到 ======================================== 四、添加的方法
$admin=newAdmin;
$admin->username=$username;
$admin->password=$password;
$admin->save() //添加,修改都能用save $userLimit = new UserLimit();
$userLimit->item = 0.30000;
$userLimit->insert() //常规添加插入 ======================================== 五、修改的方法 $userLimitRet = UserLimit::model()->findByPk (array (
'user_id' => $userId,
'category_id' => $v
));
$userLimitRet->order = $order;
$userLimitRet->update() //常规修改方法 $userAmount=userAmount::model()->findByPk ($userId);
$userAmount->credit=Yii::app()->request->getParam('credit',10000);
$ret = $userAmount->save(); //添加,修改都能用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 "修改失败";
} 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 "修改失败";
} ======================================== 六、删除的方法 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 "删除失败";
} ======================================== 七、链式写法
$pagesize = 5;
$page = $this->request->getParam('page',1);
$result = Yii::app()->db->createCommand()->select('m.id,content as desc,link as title')
->from('sdk_user_msg u')
->join('sdk_msg m','u.msg_id=m.id')
->where('u.uid in(0,:uid) and u.game_id in(0,:game_id) and m.starttime <= :date and m.endtime >= :date and m.status = 1',[':uid' => $uid,':game_id' => $game_id,':date'=>$date])
->limit($pagesize, ($page - 1) * $pagesize)
->order('m.id desc')
->queryAll();

 

Yii的where方法使用大全   https://blog.csdn.net/liruxing1715/article/details/48575025

YII 1.0 常用CURD写法的更多相关文章

  1. Yii Framework2.0开发教程(5)数据库mysql性能

    继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...

  2. Yii 2.0 query模式语法

    项目使用Yii 2.0版本开发,个人一直喜好使用(new \yii\db\Query())模式操作数据,把增.删.查.改这4种情况的写法整理出来,方便查阅和记忆. 增加 - insert use Yi ...

  3. github 编写README时常用的写法

    参考:https://github.com/HeTingwei/ReadmeLearn#%E7%BC%96%E5%86%99readme%E6%97%B6%E5%B8%B8%E7%94%A8%E7%9 ...

  4. [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]

    Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...

  5. Mongodb 数据类型及Mongoose常用CURD

    前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...

  6. 使用nginx部署Yii 2.0\yii-basic-app-2.0.5

    nginx.conf #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log noti ...

  7. Visual Assist X 10.6.1830.0 常用快捷键

    Visual Assist X 10.6.1830.0 常用快捷键 1.Alt + G: 在定义与声明之间互跳. 2.Alt + O: 在.h与.cpp之间互跳.(O是字母O,不是数字零) 3.Alt ...

  8. Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug

    Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug,我是直接下载Archive文件安装的,非Composer方式安装 Yii 框架之前是支持在Url中包含大写字母的 最新的Yii 2 ...

  9. [ActionScript 3.0] 常用的正则表达式

    as 3.0常用的正则表达式: /* * 去除字符串前面的空格和跳格符 */ var src:String=" Hello! "; trace(src); //原文本 trace( ...

随机推荐

  1. java.lang.IllegalStateException: Cannot forward after response has been committed

    jjava.lang.IllegalStateException: Cannot forward after response has been committed at org.apache.cat ...

  2. TCGA癌症缩写、癌症中英文对照

    Cohort 英文名称 中文名称 ACC Adrenocortical carcinoma 肾上腺皮质癌 BLCA Bladder Urothelial Carcinoma 膀胱尿路上皮癌 BRCA ...

  3. Python模块之pdfkit

    1.安装依赖 pip install python-docx #Python下的Microsoft Word 2007工具 pip install PyPDF2 #Python下的PDF工具 pip ...

  4. c#批量插入

    一.创建一个用来测试的数据库和表 USE [Test] GO /****** Object: Table [dbo].[student] Script Date: 2019/4/11 15:38:59 ...

  5. [Bzoj1009][HNOI2008]GT考试(动态规划)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 显而易见的动态规划加矩阵快速幂,不过转移方程不怎么好想,dp[i][j]表示长度为 ...

  6. 70.Trapping Rain Water(容水量)

    Level:   Hard 题目描述: Given n non-negative integers representing an elevation map where the width of e ...

  7. windows与linux安装Python虚拟环境

    我这里觉得还是一步到位用virtualenvwrapper  工具,不再讲述virtualenv了,有了工具很好用 windows : 首先安装工具 pip install virtualenvwra ...

  8. ASE Alpha Sprint - backend scrum 4

    本次scrum于2019.11.8再sky garden进行,持续10分钟. 参与人: Zhikai Chen, Jia Ning, Hao Wang 请假: Xin Kang, Lihao Ran, ...

  9. robotframework API 源码阅读笔记----robot.utils.asserts

    http://robot-framework.readthedocs.io/en/latest/autodoc/robot.utils.html#robot.utils.asserts.assert_ ...

  10. linux典型应用对系统资源使用的特点