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的一些基础知识分享
Jul 27 PHP
解析php中const与define的应用区别
Jun 18 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
简单的php缓存类分享     php缓存机制
Jan 22 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
浅谈php提交form表单
Jul 01 PHP
php 生成签名及验证签名详解
Oct 26 PHP
Zend Framework入门教程之Zend_Config组件用法详解
Dec 09 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
PHP文件类型检查及fileinfo模块安装使用详解
May 09 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 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插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
laravel 中如何使用ajax和vue总结
2017/08/16 PHP
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
js有序数组的连接问题
2013/10/01 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
jQuery事件的绑定、触发、及监听方法简单说明
2016/05/10 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
vue2.0移动端滑动事件vue-touch的实例代码
2018/11/27 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
由浅入深讲解python中的yield与generator
2017/04/05 Python
基于Django的ModelForm组件(详解)
2017/12/07 Python
Python扩展内置类型详解
2018/03/26 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
使用python实现画AR模型时序图
2019/11/20 Python
python ubplot使用方法解析
2020/01/10 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
超市中秋节活动方案
2014/02/12 职场文书
平面设计求职信
2014/03/10 职场文书
恶搞卫生巾广告词
2014/03/18 职场文书
机械加工与数控专业自荐书
2014/06/04 职场文书
保证书格式
2015/01/16 职场文书
加薪通知
2015/04/25 职场文书
八年级语文教学反思
2016/03/03 职场文书
MySQL系列之二 多实例配置
2021/07/02 MySQL