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个人网站架设连环讲(一)
Oct 09 PHP
非常好的php目录导航文件代码
Oct 09 PHP
一个分页的论坛
Oct 09 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP中的output_buffering详细介绍
Sep 27 PHP
浅谈PHP中foreach/in_array的使用
Nov 02 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
PHP定时执行任务的3种方法详解
Dec 21 PHP
PHP生成静态HTML文档实现代码
Jun 23 PHP
yii2 resetful 授权验证详解
May 18 PHP
php实现留言板功能(会话控制)
May 23 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 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 破解防盗链图片函数
2008/12/09 PHP
php学习之 循环结构实现代码
2011/06/09 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
Yii实现多数据库主从读写分离的方法
2014/12/29 PHP
javascript css styleFloat和cssFloat
2010/03/15 Javascript
jQuery.clean使用方法及思路分析
2013/01/07 Javascript
iScroll中事件点击触发两次解决方案
2015/03/11 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
jQuery操作Table技巧大汇总
2016/01/23 Javascript
Bootstrap表单组件教程详解
2016/04/26 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
Vue过滤器的用法和自定义过滤器使用
2017/02/08 Javascript
Vue.js在数组中插入重复数据的实现代码
2017/11/17 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
python的Template使用指南
2014/09/11 Python
在Mac下使用python实现简单的目录树展示方法
2018/11/01 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
科颜氏法国官网:Kiehl’s法国
2019/08/20 全球购物
如何理解委托
2012/01/06 面试题
酒店司机岗位职责
2013/12/14 职场文书
开学典礼感言
2014/02/16 职场文书
运动会稿件50字
2014/02/17 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
教师求职信范文
2014/05/24 职场文书
实习单位证明范例
2014/11/17 职场文书
机器人总动员观后感
2015/06/09 职场文书
学生会干部任命书
2015/09/21 职场文书
演讲稿:​快乐,从不抱怨开始!
2019/04/02 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
浅谈MySQL之select优化方案
2021/08/07 MySQL
mysql查找连续出现n次以上的数字
2022/05/11 MySQL