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 和 XML: 使用expat函数(三)
Oct 09 PHP
PHP 数据库树的遍历方法
Feb 06 PHP
phpmyadmin 常用选项设置详解版
Mar 07 PHP
WordPress判断用户是否登录的代码
Mar 17 PHP
php使用qr生成二维码的示例分享
Jan 20 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
May 27 PHP
php源码分析之DZX1.5加密解密函数authcode用法
Jun 17 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP+MySql实现一个简单的留言板
Jul 19 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
return false;和e.preventDefault();的区别
2010/07/11 Javascript
jQuery.ajax 用户登录验证代码
2010/10/29 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
javascript轮播图算法
2016/10/21 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
关于Node.js中Buffer的一些你可能不知道的用法
2017/03/28 Javascript
使用ES6语法重构React代码详解
2017/05/09 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
JS计算输出100元钱买100只鸡问题的解决方法
2018/01/04 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
[46:32]Fnatic vs OG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
有关Python的22个编程技巧
2018/08/29 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
Python如何使用input函数获取输入
2020/08/06 Python
详解Python遍历列表时删除元素的正确做法
2021/01/07 Python
css3 iphone玻璃透明气泡完美实现
2013/03/20 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
物流专业大学生的自我鉴定
2013/11/13 职场文书
公司副总经理任命书
2014/06/05 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
入股协议书范本
2014/11/01 职场文书
研究生个人学年总结
2015/02/14 职场文书
从事会计工作年限证明
2015/06/23 职场文书
Python闭包的定义和使用方法
2022/04/11 Python