【发布时间】:2015-07-08 14:30:19
【问题描述】:
我有两个模型之间的 HAS_MANY 关系,我使用 bookID 作为外键
模型 1 - Importedbooks,Importedbooks 可以有多个 CountryOfImport
public function relations()
{
return array(
'CountryOfImportObj'=>array(self::HAS_MANY, 'CountryOfImport', 'bookID')
);
}
模型 2 CountryOfImport,CountryOfImport 属于 Importedbooks
public function relations()
{
return array(
'ImportBooksObj'=>array(self::BELONGS_TO, 'Importedbooks', 'bookID')
);
}
现在,对于我的 CGridView,我正在使用 Importedbooks 模型的 model->search() 作为我的 dataProvider,从这里我就卡住了。
CGridView
$data = $model->search();
$data->setPagination(array('pageSize'=>'5'));
$data->criteria->addCondition('active = "yes"');
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$data
,'filter'=>$model
,'pager'=>array('header'=>'')
,'columns'=>array(
'id',
'bookYear',
'bookTitle',
'DISPLAY VALUE FROM OTHER model HERE'
)
)
);
导入书籍模型的数据提供者,我将其用作网格的数据提供者
public function search()
{
$criteria=new CDbCriteria;
$criteria->compare('id',$this->id);
$criteria->compare('bookID',$this->bookID);
$criteria->compare('countryName',$this->countryName,true);
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
));
}
这种关系有效,因为我可以在我的控制器中使用下面的代码从另一个模型中获取一个字段(国家名称)
$model = Importedbooks::model()->with('CountryOfImportObj')->findbyPK(3);
print_r($model->CountryOfImportObj[0]->countryName);
【问题讨论】:
-
请为每个模型添加字段名称,以了解您使用的是哪个模型的数据提供者。
-
嗨,我想访问的字段是 CountryOfImport 模型中的“id”、“countryName”,我使用的 dataProvider 来自 Importedbooks 模型。我希望这个 enuf 信息。
标签: php yii has-many cgridview