Yii操作数据库的3种方法


Posted in PHP onMarch 11, 2014

一、执行原生太SQL的PDO方式。

$sql = "";//原生态sql语句 
xx::model()->dbConnection->createCommand($sql)->execute();

二、Active Record方式
(1)New 方式
$post=new Post; 
$post->title='sample post'; 
$post->content='post body content'; 
$post->save();

(2)Criteria方式
也可以使用 $condition 指定更复杂的查询条件。 不使用字符串,我们可以让 $condition 成为一个 CDbCriteria 的实例,它允许我们指定不限于 WHERE 的条件。
$criteria=new CDbCriteria; 
$criteria->select='title';  // 只选择 'title' 列 
$criteria->condition='postID=:postID'; 
$criteria->params=array(':postID'=>10); 
$post=Post::model()->find($criteria);

一种替代 CDbCriteria 的方法是给 find 方法传递一个数组。 数组的键和值各自对应标准(criterion)的属性名和值,上面的例子可以重写为如下:
$post=Post::model()->find(array( 
    'select'=>'title', 
    'condition'=>'postID=:postID', 
    'params'=>array(':postID'=>10), 
));

当一个查询条件是关于按指定的值匹配几个列时,我们可以使用 findByAttributes()。我们使 $attributes 参数是一个以列名做索引的值的数组。在一些框架中,此任务可以通过调用类似 findByNameAndTitle 的方法实现。虽然此方法看起来很诱人,但它常常引起混淆、冲突和比如列名大小写敏感的问题。
三、Query Builder 方式
$user = Yii::app()->db->createCommand() 
    ->select('id, username, profile') 
    ->from('tbl_user u') 
    ->join('tbl_profile p', 'u.id=p.user_id') 
    ->where('id=:id', array(':id'=>$id)) 
    ->queryRow();
PHP 相关文章推荐
php mssql 时间格式问题
Jan 13 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
php和mysql中uft-8中文编码乱码的几种解决办法
Apr 19 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
Jun 24 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
destoon公司主页模板风格的添加方法
Jun 20 PHP
php判断当前操作系统类型
Oct 28 PHP
php版微信自动登录并获取昵称的方法
Sep 23 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
Nov 14 PHP
Yii2.0中使用js异步删除示例
Mar 10 PHP
通过php动态传数据到highcharts
Apr 05 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
php导出excel格式数据问题
Mar 11 #PHP
PHP中对于浮点型的数据需要用不同的方法解决
Mar 11 #PHP
php设置允许大文件上传示例代码
Mar 10 #PHP
php如何解决无法上传大于8M的文件问题
Mar 10 #PHP
php中3种方法删除字符串中间的空格
Mar 10 #PHP
CodeIgniter框架中_remap()使用方法2例
Mar 10 #PHP
PHP文件大小格式化函数合集
Mar 10 #PHP
You might like
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
比较全的PHP 会话(session 时间设定)使用入门代码
2008/06/05 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
location.href语句与火狐不兼容的问题
2010/07/04 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
用jquery获取自定义的标签属性的值简单实例
2016/09/17 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
浅谈vue 单文件探索
2018/09/05 Javascript
vue中使用props传值的方法
2019/05/08 Javascript
python简单文本处理的方法
2015/07/10 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
在OpenCV里使用Camshift算法的实现
2019/11/22 Python
pytorch 移动端部署之helloworld的使用
2020/10/30 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
请解释在new与override的区别
2012/10/29 面试题
服务员岗位职责
2014/01/29 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
在js中修改html body的样式
2021/11/11 Javascript