<?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. git查看某个文件的提交历史

    1. git log --pretty=oneline 文件名 文件名是文件路径+文件名,输入完整 输入正确后,打印出版本号的列表 2. git show <git提交版本号> <文 ...

  2. PHP 开启错误显示并设置错误报告级别

    警告:生产环境永远都不要显示任何错误信息! 显示错误(display_errors)和错误报告(error_reporting)是两回事.PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录 ...

  3. Bootstrap 学习笔记13 附加导航插件

    附加导航代码: <style> a:focus { outline: none; } .nav-pills { width: 150px; } .nav-pills.affix { top ...

  4. GB/T2659-2000《世界各国和地区名称代码》

    代码 代码名称 004 阿富汗 008 阿尔巴尼亚 012 阿尔及利亚 016 美属萨摩亚 020 安道尔 024 安哥拉 660 安圭拉 010 南极洲 028 安提瓜和巴布达 032 阿根廷 05 ...

  5. Ubuntu下的图形化多线程下载器XDM

    目录 1.下载 2.安装 3.浏览器支持 使用Ubuntu下载东西经常过于缓慢,因此需要多进程下载器. 1.下载 下载链接:http://xdman.sourceforge.net/#download ...

  6. spring-第十七篇之spring AOP基于注解的零配置方式

    1.基于注解的零配置方式 Aspect允许使用注解定义切面.切入点和增强处理,spring框架可以识别并根据这些注解来生成AOP代理.spring只是用了和AspectJ 5一样的注解,但并没有使用A ...

  7. 组件化框架设计之AOP&IOC(四)

    阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将从以下两个方面来介绍组件化框架设计: [AOP(面向切 ...

  8. luoguP1311 选择客栈 题解(NOIP2011)

    P1311 选择客栈  题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...

  9. C# DATETIME格式转换汇总 根据日期获取星期

    原文:C# DATETIME格式转换汇总 根据日期获取星期 C# DateTime.Now.Year --2019(年) DateTime.Now.Month --9(月) DateTime.Now. ...

  10. webstorm2018

    1.安装后修改hosts: windows\system32\drivers\etc   管理员权限修改 0.0.0.0 account.jetbrains.com 2. 选择activation c ...