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 相关文章推荐
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
Feb 09 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
基于php实现长连接的方法与注意事项的问题
May 10 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
Jul 03 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
php简单实现快速排序的方法
Apr 04 PHP
Symfony2使用第三方库Upload制作图片上传实例详解
Feb 04 PHP
yii2中的rules 自定义验证规则详解
Apr 19 PHP
php连接oracle数据库的核心步骤
May 26 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 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查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
JavaScript创建命名空间(namespace)的最简实现
2007/12/11 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
JSX在render函数中的应用详解
2019/09/04 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
python在不同层级目录import模块的方法
2016/01/31 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Python实现网站注册验证码生成类
2017/06/08 Python
python使用Pycharm创建一个Django项目
2018/03/05 Python
flask session组件的使用示例
2018/12/25 Python
python 一个figure上显示多个图像的实例
2019/07/08 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
斯图尔特·韦茨曼鞋加拿大官网:Stuart Weitzman加拿大
2019/10/13 全球购物
给分销商的致歉信
2014/01/14 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
预备党员表决心书
2014/03/11 职场文书
学习演讲稿范文
2014/05/10 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2015年十一国庆节演讲稿
2015/03/20 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
MySQL 分组查询的优化方法
2021/05/12 MySQL
springboot用户数据修改的详细实现
2022/04/06 Java/Android