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的知识
Nov 17 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
Ajax+PHP 边学边练 之二 实例
Nov 24 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
php实现的任意进制互转类分享
Jul 07 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
Mar 18 PHP
PHP线程的内存回收问题
Jul 08 PHP
PHP进程通信基础之信号
Feb 19 PHP
利用php-cli和任务计划实现订单同步功能的方法
May 03 PHP
PHP中模糊查询并关联三个select框
Jun 19 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
ionCube 一款类似zend的PHP加密/解密工具
2010/07/25 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
深入探究AngularJS框架中Scope对象的超级教程
2016/01/04 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
JavaScript如何把两个数组对象合并过程解析
2019/10/10 Javascript
Vuex模块化应用实践示例
2020/02/03 Javascript
[01:04:48]VGJ.S vs TNC Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python Django连接MySQL数据库做增删改查
2013/11/07 Python
编写Python的web框架中的Model的教程
2015/04/29 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
python连接mongodb密码认证实例
2018/10/16 Python
Python 数值区间处理_对interval 库的快速入门详解
2018/11/16 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
python3.7 openpyxl 删除指定一列或者一行的代码
2019/10/08 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
2014年健康教育实施方案
2014/02/17 职场文书
毕业生如何写自我鉴定
2014/03/15 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
个人年终总结范文
2015/03/09 职场文书
2015年小学重阳节活动总结
2015/07/29 职场文书
国际贸易实训总结
2015/08/03 职场文书
师德培训心得体会2016
2016/01/09 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
ant design vue的form表单取值方法
2022/06/01 Vue.js
Moment的feature导致线上bug解决分析
2022/09/23 Javascript