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中防止直接访问或查看或下载config.php文件的方法
Jul 07 PHP
模板引擎smarty工作原理以及使用示例
May 25 PHP
php递归删除目录与文件的方法
Jan 30 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
PHP消息队列用法实例分析
Feb 12 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
Laravel实现表单提交
May 07 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
May 20 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
Nov 16 PHP
PHP检测接口Traversable用法详解
Dec 29 PHP
php将从数据库中获得的数据转换成json格式并输出的方法
Aug 21 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实现执行某一操作时弹出确认、取消对话框
2013/12/30 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
javascript强大的日期函数代码分享
2013/09/04 Javascript
提高jQuery性能的十个诀窍
2013/11/14 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
js友好的时间返回函数
2016/08/24 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
微信小程序自定义单项选择器样式
2019/07/25 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
2021/02/24 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[02:38]DOTA2 夜魇暗潮2020活动介绍官方视频
2020/11/04 DOTA
python 循环读取txt文档 并转换成csv的方法
2018/10/26 Python
Python UnboundLocalError和NameError错误根源案例解析
2018/10/31 Python
PIL图像处理模块paste方法简单使用详解
2019/07/17 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
python中def是做什么的
2020/06/10 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
animation和transition的区别
2020/10/12 HTML / CSS
Canvas多边形绘制的实现方法
2019/08/05 HTML / CSS
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
正规的求职信范文分享
2013/12/11 职场文书
小学生节约用水倡议书
2014/05/15 职场文书
励志演讲稿大全
2014/08/21 职场文书
大学生违纪检讨书300字
2014/10/25 职场文书
给老婆的检讨书(搞笑版)
2015/05/06 职场文书
Python3.10的一些新特性原理分析
2021/09/15 Python
一行Python命令实现批量加水印
2022/04/07 Python