我有模型:table,column,index,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的一个查询中的所有查询。
答案 0 :(得分:0)
低于你想要的?
$filteredAdTable = AdTable::model()->with(array(
'indexes' => array(
'alias' => 'at',
//'condition' => '',
//'params' => array(),
'with' => array(
'adIndexColumns'=>array( // 'I changed name this relation from columns to adIndexColumns not to make confusion with the relation columns of AdTable'
'alias' => 'aic',
//'condition' => '',
//'params' => array(),
)
)
),
'columns' => array(
'alias' => 'ac',
//'condition' => '',
//'params' => array(),
)
))->findAll(
//'condition' => '',
//'params' => array(),
);
也许你应该看看together
选项