Yii使用find findAll查找出指定字段的实现方法

Yii使用find findAll查找出指定字段的实现方法,非常实用的技巧,需要的朋友可以参考下。

用过Yii的朋友都知道,采用如下方法:

查看代码

打印

1 modelName::model()->find() //找出的是一个对象
2 modelName::model()->findALL() //找出的是一个对象集合的数组

可以找出对象与对象集合的数组,那么如何找出我所需要的字段的数据,而不是全部字段的数据呢?之前我是这么做的:

查看代码

打印

1 $criteria=new CDbCriteria;
2 $criteria->select=‘username,id,email‘;
3 $criteria->order=‘id DESC‘;
4 $users=modelName::model()->findAll( $criteria );

后台无意中看到别人有这么写的,方法很不错:

查看代码

打印

1 $users=modelName::model()->findAll(array(‘select‘=>array(‘username‘,‘id‘,‘email‘),‘order‘=>‘id DESC‘));

测试后发现果然可以用,那么find也可以这么操作:

查看代码

打印

1 $user=modelName::model()->find(array(‘select‘=>array(‘username‘,‘id‘,‘email‘),‘order‘=>‘id DESC‘,‘condition‘=>‘id=‘.$id, ));

当然了,这么做肯定不安全了,换成下面的方法同样可以:

查看代码

打印

1 $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 的。

时间: 2024-08-01 10:33:08

Yii使用find findAll查找出指定字段的实现方法的相关文章

Yii 关于 find findAll 查找出制定的字段的方法

总所周知 modelName::model() -> find() //找出的是一个对象 modelName::model() -> findALL() //找出的是一个对象集合的数组 如何找出我所需要的字段的数据,而不是全部字段的数据 之前我是这么做的 $criteria = new CDbCriteria; $criteria->select = 'username,id,email'; $criteria->order = 'id DESC'; $users = modelN

用Python遍历(Linux)的子目录并且查找出指定的字符串带(扩展名)黑白名单功能

<软件&网站架构师手记>之一_用Python脚本补充Linux命令的不完善之二: 用Python脚本遍历(Linux)的子目录(或文件夹)并且查找出指定的字符串,并且显示: 1.目录位置: 2.(字符串)所在的文件名: 3.字符串所在(文件中)的行号; 4.以及显示本行信息,既显示本行的(从本行开始)的256个字符. #并且支持把扩展名放进脚本中 用数组存放的黑.白(扩展名)名单中: 既先在"白扩展名"类型的文件当中:检索,如*.txt, *.log, *.cnf,

js实现获取两个日期之间筛选出指定周日制的方法

var start = "2017-5-25"; var end = "2017-6-5"; var startTime = new Date(start); var endTime = new Date(end) var timeArr = []; var weekDay = ["1","2","3"] while((endTime.getTime()-startTime.getTime())>=0

使用Entity Framework和WCF Ria Services开发SilverLight之6:查找指定字段

对数据库表指定字段的查找,又是实际工作中的一项必要工作.SL客户端仅获取实际需要的指定的字段,好处很多,比如:有助于减少网络流量. 有两类这样的使用场景. 1:联表查询不需要外键表 在上一篇中,我们使用了联表查询,在联表查询中,DAL部分的代码是这样的: 我们已经指出,无论是你是否使用Include方法,只要实体类指定了Include特性,客户端都会获取到被关联的Course记录.诚然,有时候我们需要满足联表查询,但是其他时候我们不需要. 2:单表中仅仅需要部分字段 比如:一个表有5个字段,我仅

MySQL批量替换指定字段字符串

MySQL批量替换是我们经常会用到的功能,有时站内包含敏感词,会给我们带来麻烦,而在信息量较大的情况下,一篇篇查找.修改是不现实的. 用MySQL批量替换,甚是轻松.发布在这里供参考,以备不时之需. MySQL批量替换指定字段字符串语句 UPDATE 数据表名 SET 字段名 = replace(字段名, '要替换的字符串', '替换为') WHERE 设定条件; 比如本站今天发现站内关于linux命令的文章 标题不是太好,以前都是以 linux下mkdir命令使用详解---linux创建目录命

查找含有指定字符的表

有的时候,我们想知道包含特定字符的表都有哪些,怎么办呢?其实很简单:SELECT * FROM dbo.MyCustomer WHERE CustomerName LIKE '%AA%' 这个样子的SQL我们都不陌生,很简单的查询.再回过来看下我们现在遇到的问题:我们不知道表的名称.字段的名称,那我们只要列出所有的表和对应的字段然后遍历一下就可以了,换句话说,我们只需要把上面的表名[MyCustomer]和字段名[CustomerName]替换成变量就可以.有了SQL语句通过[EXEC]我们就可

查找包含某字段名的表名

select a.name as 表名 from sysobjects a left join syscolumns b on a.id=b.id where a.xtype='U' and b.name='字段名' --查找不包含指定字段的表名 select a.name as 表名 from sysobjects a left join syscolumns b on a.id=b.id where a.xtype='U' EXCEPT select a.name as 表名 from sy

将mongodb 数据指定字段导出,然后指定字段导入mysql 实例 及相关问题解决

需求:将mongodb 数据指定字段导出,然后再指定字段导入mysql  表中 直接上图吧, 最后 会将遇到几个问题及解决方案贴出,以便遇到类似问题可以迅速解决(期间所用命令具体用法不在本文详解之内) 将mongodb 数据指定字段导出,所用命令Mongoexport ,具体查阅官方文档: 导出指定二级字段 Mongodb /opt/mongodb/bin/mongoexport  --host yourip  --port yourport   -d app_form -c applicati

Mysql根据指定字段的int值查出在当前列表的排名

先看表结构和数据: DROP TABLE IF EXISTS `ndb_record`; CREATE TABLE `ndb_record` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '测量记录', `user_id` bigint(20) NOT NULL COMMENT '用户id', `yellow` int(11) DEFAULT NULL COMMENT '黄色状态持续时长', `green` int(11) DEFAULT N