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 相关文章推荐
用PHP+java实现自动新闻滚动窗口
Oct 09 PHP
PHPMailer安装方法及简单实例
Nov 25 PHP
使用dump函数,给php加断点测试
Jun 25 PHP
在PHP中使用redis
Nov 04 PHP
简单的php中文转拼音的实现代码
Feb 11 PHP
PHP实现简单爬虫的方法
Jul 29 PHP
php获取图片信息的方法详解
Dec 10 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
laravel5环境隐藏index.php后缀(apache)的方法
Oct 12 PHP
PHP7 windows支持
Mar 09 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 读取Postgresql中的数组
2013/04/14 PHP
php中autoload的用法总结
2013/11/08 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
ThinkPHP公共配置文件与各自项目中配置文件组合的方法
2014/11/24 PHP
php中session与cookie的比较
2015/01/27 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
jQuery+jqmodal弹出窗口实现代码分明
2010/06/14 Javascript
用jquery和json从后台获得数据集的代码
2011/11/07 Javascript
jquery增加时编辑jqGrid(实例代码)
2013/11/08 Javascript
php,js,css字符串截取的办法集锦
2014/09/26 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JavaScript必知必会(五) eval 的使用
2016/06/08 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
windows下python 3.6.4安装配置图文教程
2018/08/21 Python
Python饼状图的绘制实例
2019/01/15 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
浅谈tensorflow中张量的提取值和赋值
2020/01/19 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
Pandas之缺失数据的实现
2021/01/06 Python
27个经典Linux面试题及答案,你知道几个?
2014/03/11 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
家长评语大全
2014/01/22 职场文书
求职教师自荐书
2014/06/19 职场文书
小学生教师节演讲稿
2014/09/03 职场文书
语文复习计划
2015/01/19 职场文书
社区挂职锻炼个人工作总结
2015/10/23 职场文书
《小摄影师》教学反思
2016/02/18 职场文书