为Mongo集合创建动态属性-YII框架

为Mongo集合创建动态属性-YII框架,yii,yii-extensions,Yii,Yii Extensions,我正在尝试为Mongo集合创建动态模型类,并在Cgridview中填充数据(使用yiimongodSuite扩展) 从MySQL数据库获取列: $sql="SELECT name FROM CRM_Field Where crm_base_contact_id = ".$base; $names =Yii::app()->db->createCommand($sql)->query()-> readAll(); 访问视图中的模型: $cc = new ContactC

我正在尝试为Mongo集合创建动态模型类,并在Cgridview中填充数据(使用yiimongodSuite扩展)

从MySQL数据库获取列:

$sql="SELECT name FROM CRM_Field Where crm_base_contact_id = ".$base;
$names =Yii::app()->db->createCommand($sql)->query()-> readAll();
访问视图中的模型:

 $cc = new ContactCollection($names);// Passing dynamic column names to Model 
 $criteria = new EMongoCriteria;
 $criteria->crm_base_contact_id('==', $base);
 $cc->setDbCriteria($criteria);
CgridView代码:

 <?php $this->widget('zii.widgets.grid.CGridView', array(
    'id' =>'BCImported-grid',
    'dataProvider' => $cc->search(false),
    'columns' => $names,
        )); ?>

ContactCollection模型:

<?php
class ContactCollection extends EMongoDocument
    {
        public $dyn_fields;
   public function __construct ($names) {
        $this->dyn_fields = $names;

    }

  public function getCollectionName()
      {
        return 'cartoons';
      }

    /**
     * @return array validation rules for model attributes.
     */
    public function rules()
    {
        $allMembers = implode(', ', array_keys($this->dyn_fields));
        return array(
            array($allMembers, 'required'),
        );
    }

    public function attributeLabels()
    {
       return $this->dyn_fields;
    }
    }

在这种情况下,您不需要“attributeLabels()”方法,因为每个属性都应该有一个关联的值。如果不设置该方法,Yii将使用属性名称作为标签本身。

从何处获得此错误?另外,如果您使用的是YIIMongodbsuite,请查看EMongoSoftDocument,它正是您在这里试图做的。