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 相关文章推荐
简单易用的计数器(数据库)
Oct 09 PHP
社区(php&&mysql)二
Oct 09 PHP
用PHP实现ODBC数据分页显示一例
Oct 09 PHP
php下连接mssql2005的代码
Jan 17 PHP
PHP 伪静态技术原理以及突破原理实现介绍
Jul 12 PHP
ucenter通信原理分析
Jan 09 PHP
Codeigniter的一些优秀特性总结
Jan 21 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
php比较两个字符串长度的方法
Jul 13 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
thinkPHP引入类的方法详解
Dec 08 PHP
Yii 2.0中场景的使用教程
Jun 02 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/03/23 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
如何通过PHP实现Des加密算法代码实例
2020/05/09 PHP
根据分辨率不同,调用不同的css文件
2006/07/07 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
引入autocomplete组件时JS报未结束字符串常量错误
2014/03/19 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue项目配置同一局域网可使用ip访问的操作
2020/10/23 Javascript
Python的print用法示例
2014/02/11 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python中的格式化输出用法总结
2016/07/28 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
python yield关键词案例测试
2019/10/15 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
python unichr函数知识点总结
2020/12/16 Python
英国电信商店:BT Shop
2019/12/17 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
PHP如何去执行一个SQL语句
2016/03/05 面试题
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
试用期转正工作总结2015
2015/05/28 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python