YII 1.0 常用CURD写法
<?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写法的更多相关文章
- Yii Framework2.0开发教程(5)数据库mysql性能
继续<Yii Framework2.0开发教程(3)数据库mysql入门> 首先给予一定的尊重yii2数据库支持引进 Yii 基于 PHP's PDO一个成熟的数据库访问层的建立.它提供了 ...
- Yii 2.0 query模式语法
项目使用Yii 2.0版本开发,个人一直喜好使用(new \yii\db\Query())模式操作数据,把增.删.查.改这4种情况的写法整理出来,方便查阅和记忆. 增加 - insert use Yi ...
- github 编写README时常用的写法
参考:https://github.com/HeTingwei/ReadmeLearn#%E7%BC%96%E5%86%99readme%E6%97%B6%E5%B8%B8%E7%94%A8%E7%9 ...
- [Yii2.0] 以Yii 2.0风格加载自定义类或命名空间 [配置使用Yii2 autoloader]
Yii 2.0最显著的特征之一就是引入了命名空间,因此对于自定义类的引入方式也同之前有所不同.这篇文章讨论一下如何利用Yii 2.0的自动加载机制,向系统中引入自定义类和命名空间.本文旨在抛砖引玉,如 ...
- Mongodb 数据类型及Mongoose常用CURD
前言 看完了Node.js实战,其中在数据存储部分提到了Redis.Mongodb,我自己也根据书中的介绍写了几个简单的demo,在demo的过程首先遇到的问题就是数据类型和常见的CURD写法. mo ...
- 使用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 ...
- 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 ...
- Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug
Yii 2.0.3 Advanced版控制器不能包含大写字母的Bug,我是直接下载Archive文件安装的,非Composer方式安装 Yii 框架之前是支持在Url中包含大写字母的 最新的Yii 2 ...
- [ActionScript 3.0] 常用的正则表达式
as 3.0常用的正则表达式: /* * 去除字符串前面的空格和跳格符 */ var src:String=" Hello! "; trace(src); //原文本 trace( ...
随机推荐
- git查看某个文件的提交历史
1. git log --pretty=oneline 文件名 文件名是文件路径+文件名,输入完整 输入正确后,打印出版本号的列表 2. git show <git提交版本号> <文 ...
- PHP 开启错误显示并设置错误报告级别
警告:生产环境永远都不要显示任何错误信息! 显示错误(display_errors)和错误报告(error_reporting)是两回事.PHP 脚本发生错误时,可以根据设置选择是否报告这个错误(记录 ...
- Bootstrap 学习笔记13 附加导航插件
附加导航代码: <style> a:focus { outline: none; } .nav-pills { width: 150px; } .nav-pills.affix { top ...
- GB/T2659-2000《世界各国和地区名称代码》
代码 代码名称 004 阿富汗 008 阿尔巴尼亚 012 阿尔及利亚 016 美属萨摩亚 020 安道尔 024 安哥拉 660 安圭拉 010 南极洲 028 安提瓜和巴布达 032 阿根廷 05 ...
- Ubuntu下的图形化多线程下载器XDM
目录 1.下载 2.安装 3.浏览器支持 使用Ubuntu下载东西经常过于缓慢,因此需要多进程下载器. 1.下载 下载链接:http://xdman.sourceforge.net/#download ...
- spring-第十七篇之spring AOP基于注解的零配置方式
1.基于注解的零配置方式 Aspect允许使用注解定义切面.切入点和增强处理,spring框架可以识别并根据这些注解来生成AOP代理.spring只是用了和AspectJ 5一样的注解,但并没有使用A ...
- 组件化框架设计之AOP&IOC(四)
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680 本篇文章将从以下两个方面来介绍组件化框架设计: [AOP(面向切 ...
- luoguP1311 选择客栈 题解(NOIP2011)
P1311 选择客栈 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<c ...
- C# DATETIME格式转换汇总 根据日期获取星期
原文:C# DATETIME格式转换汇总 根据日期获取星期 C# DateTime.Now.Year --2019(年) DateTime.Now.Month --9(月) DateTime.Now. ...
- webstorm2018
1.安装后修改hosts: windows\system32\drivers\etc 管理员权限修改 0.0.0.0 account.jetbrains.com 2. 选择activation c ...