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中ADODB类详解
Mar 25 PHP
PHP教程 基本语法
Oct 23 PHP
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
php获取目录所有文件并将结果保存到数组(实例)
Oct 25 PHP
PHP实现通过正则表达式替换回调的内容标签
Jun 15 PHP
PHP使用socket发送HTTP请求的方法
Feb 14 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
在IIS下安装PHP扩展的方法(超简单)
Apr 10 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
Mar 16 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
第九节--绑定
2006/11/16 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
php增删改查示例自己写的demo
2013/09/04 PHP
禁止你的左键复制实用技巧
2013/01/04 Javascript
jquery Mobile入门—多页面切换示例学习
2013/01/08 Javascript
谈一谈jQuery核心架构设计
2016/03/28 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
2019/05/05 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
从零学Python之hello world
2014/05/21 Python
Python使用Flask框架同时上传多个文件的方法
2015/03/21 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
python实现朴素贝叶斯算法
2018/11/19 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
django使用xadmin的全局配置详解
2019/11/15 Python
Python语言编写智力问答小游戏功能
2020/10/13 Python
如何设定的weblogic的热启动模式(开发模式)与产品发布模式
2012/09/08 面试题
一道SQL存储过程面试题
2016/10/07 面试题
《乡下孩子》教学反思
2014/04/17 职场文书
2014年党课学习材料
2014/05/11 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
民主评议党员总结
2014/10/20 职场文书
家长对孩子的寄语
2015/02/26 职场文书
2015年见习期个人工作总结
2015/05/28 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
python 判断文件或文件夹是否存在
2022/03/18 Python