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 编程的 5个良好习惯
Feb 20 PHP
将数组写入txt文件 var_export
Apr 21 PHP
PHP中的生成XML文件的4种方法分享
Oct 06 PHP
以文件形式缓存php变量的方法
Jun 26 PHP
symfony2.4的twig中date用法分析
Mar 18 PHP
浅谈PHP Cookie处理函数
Jun 10 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
PHP用函数嵌入网站访问量计数器
Oct 27 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
Nov 10 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
laravel admin实现分类树/模型树的示例代码
Jun 10 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 字符串加密函数(在指定时间内加密还原字符串,超时无法还原)
2010/04/28 PHP
PHP获取url的函数代码
2011/08/02 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
2015/05/11 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
使用phpstorm和xdebug实现远程调试的方法
2015/12/29 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
Angular工具方法学习
2016/12/26 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS仿淘宝搜索框用户输入事件的实现
2017/06/19 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
Nodejs文件上传、监听上传进度的代码
2020/03/27 NodeJs
微信小程序实现滑动操作代码
2020/04/23 Javascript
JPype实现在python中调用JAVA的实例
2017/07/19 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
Python面向对象之类和实例用法分析
2019/06/08 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
小程序canvas中文字设置居中锚点
2019/04/16 HTML / CSS
JAVA程序员自荐书
2014/01/30 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
涉及车辆房产分割的离婚协议书范文
2014/10/12 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
西游降魔篇观后感
2015/06/15 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android