Yii框架中 find findAll 查找出制定的字段的方法对比


Posted in PHP onSeptember 10, 2014

众所周知

modelName::model() -> find()

  //找出的是一个对象
modelName::model() -> findALL()

//找出的是一个对象集合的数组
如何找出我所需要的字段的数据,而不是全部字段的数据

之前我是这么做的

$criteria = new CDbCriteria;
$criteria->select = 'username,id,email';
$criteria->order = 'id DESC';
$users = modelName::model()->findAll( $criteria );

后台无意中看到别人有这么写的,发现自己是多么的无知

$users = modelName::model()->findAll(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC', 
));

测试后发现果然可以用,那么find也可以这么操作

$user = modelName::model()->find(array(
  'select' =>array('username','id','email'),
  'order' => 'id DESC',
  'condition' => 'id='.$id,
));

当然了,这么做肯定不安全了,换成下面的方法同样可以

$users = $this->user->find(array(
  'select'=>array('id','username','email'),
  'order' => 'id DESC',
  'condition' => 'state=:state AND id=:id',
  'params' => array(':state'=>'1',':id' => '2'),
));

同理用findAll测试了也可以,结论

通过这种方法能够很方便的获取所需要的数据,当然需要分页的时候还是 需要 new 以下 CDbCriteria 的

比如我要取出videoinfo表中的'v_id','title','big_class','sub_class','upload_time','comment_num' 等字段,且条件是status=1的,按照lastmodifytime倒序,且只取出3条即可,这样操作:

$criteria = new CDbCriteria() ; 
$criteria -> select = array('v_id','title','big_class','sub_class','upload_time','comment_num');     
$criteria -> condition = 'status = 1'; 
$criteria -> order = 'lastmodifytime desc'; 
$criteria -> limit = 3; 
 $criteria ->params = array (':status' => $你的变量) ; 
$result = VideoInfo::model()->findAll($criteria);

其中我注释掉的那一行是可以传变量的,用占位符表示,比如你的status需要按照变量来条件赋值的话,可以在注释的那行赋值,然后在condition条件写成

$criteria -> condition = 'status = :status';

即可,
这样,$result变量时你取得的结果,它是个对象列表,需要遍历一下:

foreach ($result as $ob){ 
      print_r($ob->attributes); 
 }

比如你想展示每个字段只需打出

$ob->attributes['title'];

等等即可

领完,CPagination类可以和CDbCriteria类以及前台的分页插件一起用来支持分页:

$count =VideoInfo::model()->count($criteria)

      $pages=new CPagination($count);    
      $pages->pageSize=30; //每页分多少条
      $pages->applyLimit($criteria);
$result = VideoInfo::model()->findAll($criteria);
PHP 相关文章推荐
提升PHP执行速度全攻略
Oct 09 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
PHP获取网卡地址的代码
Apr 09 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
Jul 12 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
PHP判断远程图片是否存在的几种方法
May 04 PHP
destoon设置自定义搜索的方法
Jun 21 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
ThinkPHP开发--使用七牛云储存
Sep 14 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
初识php MVC
Sep 10 #PHP
叫你如何修改Nginx与PHP的文件上传大小限制
Sep 10 #PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 #PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 #PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 #PHP
PHP利用MySQL保存session的实现思路及示例代码
Sep 09 #PHP
字符串长度函数strlen和mb_strlen的区别示例介绍
Sep 09 #PHP
You might like
PHP数据库开发知多少
2006/10/09 PHP
PHP新手入门学习方法
2011/05/08 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
Avengerls vs Newbee BO3 第二场2.18
2021/03/10 DOTA
用ADODB.Stream转换
2007/01/22 Javascript
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
jQuery .tmpl() 用法示例介绍
2014/08/21 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery遮罩层实现方法实例详解(附遮罩层插件)
2015/12/08 Javascript
jQuery图片前后对比插件beforeAfter用法示例【附demo源码下载】
2016/09/20 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
vue 设置路由的登录权限的方法
2018/07/03 Javascript
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
深入理解Python3中的http.client模块
2017/03/29 Python
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
Python3匿名函数用法示例
2018/07/25 Python
在python中安装basemap的教程
2018/09/20 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
django项目简单调取百度翻译接口的方法
2019/08/06 Python
python递归下载文件夹下所有文件
2019/08/31 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
python如何更新包
2020/06/11 Python
CSS3实现任意图片lowpoly动画效果实例
2017/05/11 HTML / CSS
详解Html5微信支付爬坑之路
2018/07/24 HTML / CSS
kfc实习自我鉴定
2013/12/14 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
环保志愿者活动总结
2014/06/27 职场文书
借款协议书
2014/09/16 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
修辞手法有哪些?
2019/08/29 职场文书