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+Tidy-完美的XHTML纠错+过滤
Apr 10 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php入门学习知识点三 PHP上传
Jul 14 PHP
深入解析PHP中的(伪)多线程与多进程
Jul 01 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
PHP使用GIFEncoder类生成gif动态滚动字幕
Jul 01 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
PHP加密解密实例分析
Dec 25 PHP
PhpStorm本地断点调试的方法步骤
May 21 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 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
FCKeditor的安装(PHP)
2007/01/13 PHP
PHP 开发环境配置(Zend Studio)
2010/04/28 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP解决高并发的优化方案实例
2020/12/10 PHP
javascript学习之闭包分析
2010/12/02 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
2014/01/09 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
三分钟带你玩转jQuery.noConflict()
2016/02/15 Javascript
Svg.js实例教程及使用手册详解(一)
2016/05/16 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
js定时器实例分享
2016/12/20 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
Python yield 小结和实例
2014/04/25 Python
Python中的filter()函数的用法
2015/04/27 Python
Python使用matplotlib绘制余弦的散点图示例
2018/03/14 Python
django ajax发送post请求的两种方法
2020/01/05 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
夜大毕业自我鉴定
2013/10/11 职场文书
商业活动邀请函
2014/02/04 职场文书
2014年劳动部工作总结
2014/12/11 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
vue打包时去掉所有的console.log
2022/04/10 Vue.js