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
{
---
}
谢谢你的回答。