为Mongo集合创建动态属性-YII框架
我正在尝试为Mongo集合创建动态模型类,并在Cgridview中填充数据(使用yiimongodSuite扩展) 从MySQL数据库获取列:为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
$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,它正是您在这里试图做的。