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正确配置mysql(apache环境)
Aug 28 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP系统命令函数使用分析
Jul 05 PHP
php进行支付宝开发中return_url和notify_url的区别分析
Dec 22 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
PHP实现事件机制实例分析
Jun 26 PHP
浅谈php错误提示及查错方法
Jul 14 PHP
PHP代码实现表单数据验证类
Jul 28 PHP
详解php中 === 的使用
Oct 24 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
Jun 20 PHP
PHP实现求连续子数组最大和问题2种解决方法
Dec 26 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 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
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php object转数组示例
2014/01/15 PHP
PHP缓冲区用法总结
2016/02/14 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
2015/12/11 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
2017/04/27 Javascript
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
浅谈Vue数据响应
2018/11/05 Javascript
JS实现拼图游戏
2021/01/29 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
[15:41]教你分分钟做大人——灰烬之灵
2015/03/11 DOTA
Python的ORM框架SQLObject入门实例
2014/04/28 Python
Python实现的堆排序算法示例
2018/04/29 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
灵泰克Java笔试题
2016/01/09 面试题
汽车专业毕业生推荐信
2013/11/12 职场文书
关于人生的感言
2014/01/17 职场文书
商超业务员岗位职责
2014/03/12 职场文书
作文评语集锦大全
2014/04/23 职场文书
教师评语大全
2014/04/28 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
体育教师求职信
2014/05/24 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
教你使用Python pypinyin库实现汉字转拼音
2021/05/27 Python
Java字符串逆序方法详情
2022/03/21 Java/Android