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中使用Oracle数据库(1)
Oct 09 PHP
PHP4与PHP5的时间格式问题
Feb 17 PHP
php程序之die调试法 快速解决错误
Sep 17 PHP
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php性能优化分析工具XDebug 大型网站调试工具
May 22 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
表格展示无限级分类(PHP版)
Aug 21 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
PHP实现邮件群发的源码
Jun 18 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP实现微信小程序人脸识别刷脸登录功能
May 24 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日历程序
2006/12/06 PHP
PHP中include()与require()的区别说明
2010/03/10 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
php把时间戳转换成多少时间之前函数的实例
2016/11/16 PHP
php+resumablejs实现的分块上传 断点续传功能示例
2017/04/18 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
再谈javascript面向对象编程
2012/03/18 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
2015/03/01 Javascript
jquery实现点击展开列表同时隐藏其他列表
2015/08/10 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
详解js静态检查工具eslint配置文件
2018/11/23 Javascript
使用vue脚手架(vue-cli)搭建一个项目详解
2019/05/09 Javascript
js实现点击烟花特效
2020/10/14 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
详解字典树Trie结构及其Python代码实现
2016/06/03 Python
详解Python多线程
2016/11/14 Python
python Matplotlib底图中鼠标滑过显示隐藏内容的实例代码
2019/07/31 Python
python pycharm的安装及其使用
2019/10/11 Python
基于python 凸包问题的解决
2020/04/16 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
使用canvas绘制贝塞尔曲线
2014/12/17 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
Nike比利时官网:Nike.com (BE)
2019/02/07 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
2014学年自我鉴定
2014/02/23 职场文书
青春励志演讲稿
2014/04/29 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
如何用 Python 子进程关闭 Excel 自动化中的弹窗
2021/05/07 Python