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 相关文章推荐
数据库相关问题
Oct 09 PHP
PHP 判断常量,变量和函数是否存在
Apr 26 PHP
PHP5 操作MySQL数据库基础代码
Sep 29 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 PHP
使用HMAC-SHA1签名方法详解
Jun 26 PHP
Php连接及读取和写入mysql数据库的常用代码
Aug 11 PHP
PHP中filter函数校验数据的方法详解
Jul 31 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
Zend Framework动作助手Redirector用法实例详解
Mar 05 PHP
PHP处理数组和XML之间的互相转换
Jun 02 PHP
PHP对称加密函数实现数据的加密解密
Oct 27 PHP
PHP PDOStatement::getColumnMeta讲解
Feb 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设置图片文件上传大小的具体实现方法
2013/10/11 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP7 弃用功能
2021/03/09 PHP
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
分享自己用JS做的扫雷小游戏
2016/02/17 Javascript
jQuery实现拖动效果的实例代码
2017/06/25 jQuery
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
详解 vue better-scroll滚动插件排坑
2018/02/08 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
vue中渲染对象中属性时显示未定义的解决
2020/07/31 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python 查找字符串是否存在实例详解
2017/01/20 Python
python 日志增量抓取实现方法
2018/04/28 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
Django如何实现上传图片功能
2019/08/16 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
django前端页面下拉选择框默认值设置方式
2020/08/09 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
证券期货行业个人的自我评价
2013/12/26 职场文书
五一家具促销方案
2014/01/10 职场文书
大学生求职计划书
2014/04/30 职场文书
大学生社会实践方案
2014/05/11 职场文书
高一课前三分钟演讲稿
2014/09/13 职场文书
婚前协议书标准版
2014/10/19 职场文书
财务部会计岗位职责
2015/02/03 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
Pandas 数据编码的十种方法
2022/04/20 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis