<?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. MySQL5.7的搭建以及SSL证书

    Centos7 安装MySQL 5.7 (通用二进制包) 1.1  下载软件包 https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-l ...

  2. Python 学习笔记15 类 - 继承

    我们在编程的过程中,并非都是要重头开始.比如其他人已经有现成的类,我们可以使用其他找人编写的类.术语称之为: 继承. 当一个类继承例外一个类时,它可以获得这个类的所有属性和方法:原有的类称之为 父类, ...

  3. 深入理解DiscoveryClient

    Spring Cloud Commons 提供的抽象 最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了Servi ...

  4. js提交map类型参数

    方式一:使用 xmlHttpRequest 对象发送数据 function sendMapPost(map, url){ var xmlHttpRequest = createXMLHttpReque ...

  5. NGUI的CheckBox的使用(toggle script)

    一,我们先添加一个sprite,选择sprite,右键选择attach,添加box collider, 然后右键选择attach,添加toggle script,得到如下图结果 1,但是如果你没有给U ...

  6. 使用再生龙对ubuntu16.04系统完全备份与还原

    1.制作再生龙U盘启动 1.所需要的软件 1.clonezilla-live-2.5.5-38-amd64.iso(再生龙系统镜像) 2.UltraISO(镜像刻录软件) 3.两个空白U盘(U盘A-用 ...

  7. traceroute学习

    之前只知道ping telnet命令,后面学习了traceroute命令 ping最常用的,看是否可以ping通ip,查看网络是否可达 telnet探测端口是否通,telnet ip port tra ...

  8. 抓包工具Charles简单使用介绍(可抓取Android中app的请求)

    摘自: 作者:Roy_Liang链接:http://www.jianshu.com/p/5539599c7a25 Charles安装 HTTP抓包 HTTPS抓包   1. Charles安装 官网下 ...

  9. PHP内置函数parse_str会自动进行urldecode(URL解码)

    用法:void parse_str ( string $str [, array &$arr] ) parse_str用来解析(分离)URL中的查询字符串(Query String),所谓查询 ...

  10. java String练习题

    package java07; /* 题目: 定义一个方法,把数组{1,2,3}按照指定格式拼接成一个字符串,格式参照如下:[word1#word2#word3] 思路: 1.首先准备一个int[]数 ...