2014-05-19 54 views
0

獲得列我有,我使用的標準來定製一些列的查詢Custommize從函數findAll的Yii

$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) 

我問題是結果包含表的所有屬性,並且屬性不在標準中 - > select will set = null

{"CompanyName":"abc","CompanyCountCoupon":"0","CompanyDes":"Hello","CompanyLogo":"\/upload\/company\/abc.jpg",**"CompanyID":null,"CompanyWebSite":null,"CompanyAdrress1":null,"CompanyAdrress2":null,"CompanyPhone1":null,"CompanyPhone2":null**} 

請幫幫我。 感謝所有

回答

1

,如果你有findAll()(使用ActiveRecord)去,你將無法控制的那部分,要走的路是自定義查詢

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

echo CJSON::encode($results); 

現在它已經很好了是JSON編碼,也比普通的ActiveRecord快得多

+0

感謝您的ansers。 – user3076539

0

使用getAttributes()

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

這是正確的行爲。

您所要求的特定列,所以這是正確提供。

回想一下,屬性是模型,而不是查詢的一部分。

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