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 相关文章推荐
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
深入PHP许愿墙模块功能分析
Jun 25 PHP
PHP5.2下preg_replace函数的问题
May 08 PHP
Yii中创建自己的Widget实例
Jan 05 PHP
基于PHP实现通过照片获取ip地址
Apr 26 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
Jul 21 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
Mar 23 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
PHP 实现重载
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
神族 Protoss 历史背景
2020/03/14 星际争霸
几个学习PHP的网址
2006/11/25 PHP
PHP Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
ThinkPHP提交表单时默认自动转义的解决方法
2014/11/25 PHP
浅谈php+phpStorm+xdebug配置方法
2015/09/17 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
编写自己的jQuery插件简单实现代码
2011/04/19 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
JS获取select-option-text_value的方法
2013/12/26 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
javascript表单处理具体实现代码(表单、链接、按钮)
2016/05/07 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
微信小程序事件 bindtap bindinput代码实例
2019/08/26 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
实践Vim配置python开发环境
2018/07/02 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
致跳高运动员广播稿
2014/01/13 职场文书
节约用水标语
2014/06/11 职场文书
教师岗位职责范本
2015/04/02 职场文书
学术会议通知
2015/04/15 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
高中数学课堂教学反思
2016/02/18 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang