1
我有两个模型:文档和报告。一份文件可以有0个或多个报告。一份报告属于0或1份文件。Yii。 CActiveDataProvider和有很多关系
class Document extends CActiveRecord {
public function relations() {
return array(
'reports' => array(self::HAS_MANY, 'Report', 'document_id')
);
}
}
class Report extends CActiveRecord {
public function relations() {
return array(
'document' => array(self::BELONGS_TO, 'Document', 'document_id')
);
}
}
field document_id可以为空。
我想使用CGridView小部件来显示表格。表格包含“文档名称”和“报告名称”列。如果文件没有报告只放“文件名”并保留“报告名称”空白。如果文档有一个或多个报告为每个报告放置一行。例如:
+--------+-------------+
|Doc name| Report name |
+--------+-------------+
|doc1 | |
|doc2 | report1 |
|doc3 | report2 |
|doc3 | report3 |
+--------+-------------+
当我试图以这种方式来创建CActiveDataProvider:
$criteria = new CDbCriteria();
$criteria->with = [
'reports' => [
'together' => true,
]
$params = [
'criteria' => $criteria,
];
$dataProvider = new CActiveDataProvider('Document', $params);
对于每一个文件,我得到第1行,即使文档中有几份报告。
如果我做了这种方式:
$criteria = new CDbCriteria();
$params = [
'criteria' => $criteria,
];
$criteria->with = [
'document' => [/*...*/],
]
$dataProvider = new CActiveDataProvider('Report', $params);
文档0报告缺少。
我该怎么做?