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生成EXCEL的东东
Oct 09 PHP
使用数据库保存session的方法
Oct 09 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
PHP输出数组中重名的元素的几种处理方法
Sep 05 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
PHP使用Memcache时模拟命名空间及缓存失效问题的解决
Feb 27 PHP
PHP实现获取并生成数据库字典的方法
May 04 PHP
php中实现字符串翻转的方法
Feb 22 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 PHP
PHP的静态方法与普通方法用法实例分析
Sep 26 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静态文件生成类实例分析
2015/01/03 PHP
smarty模板引擎基础知识入门
2015/03/30 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
tp5修改(实现即点即改)
2019/10/18 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
从jQuery.camelCase()学习string.replace() 函数学习
2011/09/13 Javascript
javascript内存管理详细解析
2013/11/11 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
全面解析bootstrap格子布局
2016/05/22 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
Angular在一个页面中使用两个ng-app的方法
2017/02/20 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
Python linecache.getline()读取文件中特定一行的脚本
2008/09/06 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python实现机器人卡牌
2019/10/06 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
中国电视购物:快乐购
2017/02/04 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
Vuori官网:运动服装的终级表现
2021/01/27 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
奉献演讲稿范文
2014/05/21 职场文书
大学生应聘求职信
2014/05/26 职场文书
2014高考励志标语
2014/06/05 职场文书
2014年教师业务工作总结
2014/12/19 职场文书
就业推荐表导师评语
2014/12/31 职场文书
门卫岗位职责
2015/02/09 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python