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 相关文章推荐
提问的智慧(2)
Oct 09 PHP
一个PHP+MSSQL分页的例子
Oct 09 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
php抽奖小程序的实现代码
Jun 18 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
PHP入门之常量简介和系统常量
May 12 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
实例解析php的数据类型
Oct 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
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
javascript事件问题
2009/09/05 Javascript
将string解析为json的几种方式小结
2010/11/11 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
jQuery中ajax的使用与缓存问题的解决方法
2013/12/19 Javascript
innerHTML在IE中报错解决方案
2014/12/15 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
jQuery团购倒计时特效实现方法
2015/05/07 Javascript
javascript表格的渲染组件
2015/07/03 Javascript
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
JQuery中解决重复动画的方法
2016/10/17 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
微信小程序switch开关选择器使用详解
2018/01/31 Javascript
基于React+Redux的SSR实现方法
2018/07/03 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
给Python初学者的一些编程技巧
2015/04/03 Python
python实现的多线程端口扫描功能示例
2017/01/21 Python
Python模块WSGI使用详解
2018/02/02 Python
Python下载网络小说实例代码
2018/02/03 Python
Python定时任务sched模块用法示例
2018/07/16 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
Python timeit模块的使用实践
2020/01/13 Python
美国鞋类购物网站:Shiekh Shoes
2016/08/21 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
中软Java笔试题
2012/11/11 面试题
单位实习证明怎么写
2014/01/17 职场文书
人力资源管理专业毕业生自荐书
2014/05/25 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
大学军训心得体会800字
2016/01/11 职场文书
Python OpenCV实现传统图片格式与base64转换
2021/06/13 Python
新手入门Mysql--概念
2021/06/18 MySQL