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 相关文章推荐
计算2000年01月01日起到指定日的天数
Oct 09 PHP
PHP入门学习的几个不错的实例代码
Jul 13 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
域名和cookie问题(域名后缀)
Oct 10 PHP
PHP跨时区(UTC时间)应用解决方案
Jan 11 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
PHP常用技巧汇总
Mar 04 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
Aug 12 PHP
分析php://output和php://stdout的区别
May 06 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实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
PHP实现的随机IP函数【国内IP段】
2016/07/20 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
jquery选择器简述
2015/08/31 Javascript
Google 地图控件集详解及实例代码
2016/08/06 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
JavaScript利用fetch实现异步请求的方法实例
2017/07/26 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
[35:26]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第三局
2016/02/26 DOTA
Python用GET方法上传文件
2015/03/10 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
python得到windows自启动列表的方法
2018/10/14 Python
python的sorted用法详解
2019/06/25 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python imread、newaxis用法详解
2019/11/04 Python
读取nii或nii.gz文件中的信息即输出图像操作
2020/07/01 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
2020/11/27 Python
纯css3显示隐藏一个div特效的具体实现
2014/02/10 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
可打印的优惠券、杂货和优惠券代码:Coupons.com
2018/06/12 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
市场营销专业个人求职信范文
2013/12/14 职场文书
自我鉴定写作要点
2014/01/17 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
个性车贴标语
2014/06/24 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
django上传文件的三种方式
2021/04/29 Python
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
mysql事务隔离级别详情
2021/10/24 MySQL
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS