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无限分类的类
Jan 02 PHP
php时区转换转换函数
Jan 07 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP 绘制网站登录首页图片验证码
Apr 12 PHP
php封装的page分页类完整实例
Oct 18 PHP
thinkPHP5.0框架引入Traits功能实例分析
Mar 18 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
解决form中action属性后面?传递参数 获取不到的问题
Jul 21 PHP
php use和include区别总结
Oct 13 PHP
PHP使用Redis队列执行定时任务实例讲解
Mar 24 PHP
php png失真的原因及解决办法
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
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
用js判断用户浏览器是否是XP SP2的IE6
2007/03/08 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
分享一个自己写的table表格排序js插件(高效简洁)
2011/10/29 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
2016/11/07 Javascript
在百度搜索结果中去除掉一些网站的资料(通过js控制不让显示)
2017/05/02 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
五分钟搞懂Vuex实用知识(小结)
2019/08/12 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
使用简单工厂模式来进行Python的设计模式编程
2016/03/01 Python
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
带你了解python装饰器
2017/06/15 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
对python字典元素的添加与修改方法详解
2018/07/06 Python
Pytorch 实现数据集自定义读取
2020/01/18 Python
Pandas时间序列基础详解(转换,索引,切片)
2020/02/26 Python
最新的互联网创业计划书
2014/01/10 职场文书
先进工作者获奖感言
2014/02/08 职场文书
运动会演讲稿100字
2014/08/25 职场文书
小学新教师个人总结
2015/02/05 职场文书
旅游安全责任协议书
2016/03/22 职场文书
2016年村干部公开承诺书(公开承诺事项)
2016/03/25 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python
Java移除无效括号的方法实现
2021/08/07 Java/Android
Netflix《海贼王》真人版剧集多张片场照曝光
2022/04/04 日漫
nginx.conf配置文件结构小结
2022/04/08 Servers