我有模型:表、列、索引、index_column。关系:
表 1..* 列
表 1..* 索引
索引 1..* index_column
模型表中定义的关系:
'columns' => array(self::HAS_MANY, 'AdColumn', 'table_id'),
'indexes' => array(self::HAS_MANY, 'AdIndex', 'table_id'),
模型列中定义的关系:
'table' => array(self::BELONGS_TO, 'AdTable', 'table_id'),
模型索引中定义的关系:
'columns' => array(self:: HAS_MANY, 'AdIndexColumn', 'index_id'),
'table' => array(self:: BELONGS_TO, 'AdTable', 'table_id'),
模型 index_column 中定义的关系:
'column' => array(self::BELONGS_TO, 'AdColumn', 'column_id'),
'index' => array(self::BELONGS_TO, 'AdIndex', 'index_id'),
'table' => array(self::BELONGS_TO, 'AdTable', 'table_id'),
我需要显示(使用 CGridView)表列表,在每一行中应该有表列列表和索引列表(名称 + 列)。
模型是用 Gii 生成的,所以我尝试了:
$filter = new AdTable('search');
$filter->unsetAttributes(); // clear any default values
$dataProvider = $filter->with('columns', 'indexes')->search();
这产生了查询:
- 用于获取所有表,
- 用于获取上述表格的所有列
- 用于获取上述表的所有索引
但是对于每个索引,还有另一个用于获取索引列的查询。我喜欢 Yii 将这些查询放在一个查询中。