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编程效率 引入缓存机制提升性能
Feb 15 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
Dec 19 PHP
php调用dll的实例操作动画与代码分享
Aug 14 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
php float不四舍五入截取浮点型字符串方法总结
Oct 28 PHP
getimagesize获取图片尺寸实例
Nov 15 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP PDOStatement::execute讲解
Jan 31 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php 读写json文件及修改json的方法
2018/03/07 PHP
js 表格隔行颜色
2009/12/02 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
微信小程序scroll-view的滚动条设置实现
2020/03/02 Javascript
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
python数据结构之列表和元组的详解
2017/09/23 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
基于Python实现的微信好友数据分析
2018/02/26 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python实现Event回调机制的方法
2019/02/13 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
Python验证码截取识别代码实例
2020/05/16 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
StubHub意大利:购买和出售全球演唱会和体育赛事门票
2017/11/21 全球购物
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
关于幼儿的自我评价
2013/12/18 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
采购意向书范本
2014/03/31 职场文书
大一学生个人总结
2015/02/15 职场文书
欠条样本
2015/07/03 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书
SSM VUE Axios详解
2021/10/05 Vue.js
浅谈如何保证Mysql主从一致
2022/03/13 MySQL
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang