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 相关文章推荐
解决MySQL中文输出变成问号的问题
Jun 05 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
PHP中用正则表达式清除字符串的空白
Jan 17 PHP
PHP 输出URL的快捷方式示例代码
Sep 22 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
php数组转成json格式的方法
Mar 09 PHP
PHP中把对象数组转换成普通数组的方法
Jul 10 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
详解PHP设计模式之依赖注入模式
May 25 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
浅谈php中include文件变量作用域
2015/06/18 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
简单实现php上传文件功能
2017/09/21 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
php 后端实现JWT认证方法示例
2018/09/04 PHP
JavaScript中的类继承
2010/11/25 Javascript
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
js与jquery分别实现tab标签页功能的方法
2016/11/18 Javascript
AngularJS使用Filter自定义过滤器控制ng-repeat去除重复功能示例
2018/04/21 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
详解vue高级特性
2020/06/09 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
python解析xml文件实例分析
2015/05/27 Python
Python模拟三级菜单效果
2017/09/11 Python
python 中的int()函数怎么用
2017/10/17 Python
Python File readlines() 使用方法
2018/03/19 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
python中 * 的用法详解
2019/07/10 Python
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
汽车广告策划方案
2014/05/31 职场文书
五年级学生评语大全
2014/12/26 职场文书
水电工岗位职责
2015/02/14 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
英语专业毕业论文答辩开场白
2015/05/27 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
MySQL数据库 任意ip连接方法
2022/05/20 MySQL