Php 自定义findAll函数Yii中的get列

Php 自定义findAll函数Yii中的get列,php,yii,Php,Yii,我有一些问题,我正在使用条件自定义数字列查询 $criteria=new CDbCriteria(); $criteria->select =array('CompanyName', 'CompanyCountCoupon','CompanyDes', 'CompanyLogo'); $models = Company::model()->findAll($criteria); 在我把它放到数组和回显结果之后 $rows =

我有一些问题,我正在使用条件自定义数字列查询

 $criteria=new CDbCriteria();
            $criteria->select =array('CompanyName', 'CompanyCountCoupon','CompanyDes', 'CompanyLogo');
            $models = Company::model()->findAll($criteria);
在我把它放到数组和回显结果之后

    $rows = array();
        foreach($models as $i=>$model1) {
            $rows[$i] = $model1->attributes;
        }
    echo  CJSON::encode($rows)
我的问题是,结果包含表的所有属性,并且属性不在criteria->select中将设置为null

   {"CompanyName":"abc","CompanyCountCoupon":"0","CompanyDes":"Hello","CompanyLogo":"\/upload\/company\/abc.jpg",**"CompanyID":null,"CompanyWebSite":null,"CompanyAdrress1":null,"CompanyAdrress2":null,"CompanyPhone1":null,"CompanyPhone2":null**}
请帮帮我。
多亏了所有的如果您使用
findAll()
(使用ActiveRecord),您将无法控制该部分,方法是使用自定义查询

$results = Yii::app()->db->createCommand()
    ->select('CompanyName ,CompanyCountCoupon ,CompanyDes ,CompanyLogo')
    ->from('company')
    //->where() // where part
    ->queryAll();

echo  CJSON::encode($results);
现在JSON编码已经很好了,而且比常规ActiveRecord快得多

使用
getAttributes()

示例

 $rows = Company::model()->getAttributes(array('CompanyName','CompanyCountCoupon','CompanyDes', 'CompanyLogo')); 
 echo  CJSON::encode($rows);

这是正确的行为

您要求的是特定的列,因此提供的列是正确的

回想一下,属性是模型的一部分,而不是查询的一部分

$model = Company::model()->findByPK();
print_r($model);
 ...
/* Company points to the TABLE. not the query */
class Company extends CActiveRecord
{
---
}

谢谢你的回答。