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你的验证码安全码?
Jan 02 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
Jun 04 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 PHP
WordPress中使主题支持小工具以及添加插件启用函数
Dec 22 PHP
php使用glob函数遍历文件和目录详解
Sep 23 PHP
PHP快速排序quicksort实例详解
Sep 28 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
Nov 20 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
May 24 PHP
PHP手机短信验证码实现流程详解
May 17 PHP
PHP的mysqli_rollback()函数讲解
Jan 23 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
Nov 09 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自动注册登录验证机制实现代码
2011/12/20 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
thinkphp模板用法和内容输出实例
2014/11/28 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP递归实现层级树状展开
2016/04/01 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
能说明你的Javascript技术很烂的五个原因分析
2011/10/28 Javascript
JS获得QQ号码的昵称,头像,生日的简单实例
2013/12/04 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
node.js中的fs.open方法使用说明
2014/12/17 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
易操作的jQuery表单提示插件
2015/12/01 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
基于react组件之间的参数传递(详解)
2017/09/05 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
Python脚本实现网卡流量监控
2015/02/14 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
Python3解释器知识点总结
2019/02/19 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
python isinstance函数用法详解
2020/02/13 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
详解Python中如何将数据存储为json格式的文件
2020/11/18 Python
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
皮尔·卡丹巴西官方商店:Pierre Cardin
2017/07/21 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
食品行业求职人的自我评价
2014/01/19 职场文书
环境保护标语
2014/06/20 职场文书
python基础之类方法和静态方法
2021/10/24 Python