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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
php实现的简单压缩英文字符串的代码
Apr 24 PHP
基于simple_html_dom的使用小结
Jul 01 PHP
php使用多个进程同时控制文件读写示例
Feb 28 PHP
destoon二次开发入门示例
Jun 20 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP利用hash冲突漏洞进行DDoS攻击的方法分析
Mar 26 PHP
PHP文件缓存smarty模板应用实例分析
Feb 26 PHP
PDO操作MySQL的基础教程(推荐)
Aug 18 PHP
PHP+Ajax实现的博客文章添加类别功能示例
Mar 29 PHP
PHP微商城开源代码实例
Mar 27 PHP
yii框架使用分页的方法分析
Jul 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
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP实现websocket通信的方法示例
2018/08/28 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2011/06/27 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
2013/02/25 Javascript
jQuery实现id模糊查询的小例子
2013/03/19 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
利用JavaScript脚本实现滚屏效果的方法
2015/07/07 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
2016/11/07 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
React Native中Navigator的使用方法示例
2017/10/13 Javascript
老生常谈JavaScript面向对象基础与this指向问题
2017/10/16 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
Python编程中使用Pillow来处理图像的基础教程
2015/11/20 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python logging模块用法示例
2018/08/28 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python中猜拳游戏与猜筛子游戏的实现方法
2020/09/04 Python
Django admin组件的使用
2020/10/24 Python
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
卡塔尔航空官方网站:Qatar Airways
2017/02/08 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
新年爱情寄语
2014/04/08 职场文书
驾驶员培训方案
2014/05/01 职场文书
读书小明星事迹材料
2014/05/03 职场文书
社团活动总结怎么写
2014/06/30 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
MySQL事务的ACID特性以及并发问题方案
2022/07/15 MySQL