Yii: CgridView 通过几个关系
Yii: CgridView through several relation
我按照本指南创建了一个允许搜索和排序相关模型的 cgridview:
http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/
这是我的关系:
许可证 BELONGS_TO 安装
安装 BELONGS_TO 节点
我可以通过这种方式使用我的许可证的任何字段创建一个 CGridview 并安装模型。但是,我可以有节点模型的字段,但是在搜索时出现以下错误:
CDbCommand failed to execute the SQL statement: SQLSTATE[42P01]: Undefined table: 7 ERROR: invalid reference to FROM-clause entry for table node
LINE 1: ...."f_product_id"="product"."f_product_id") WHERE (install.no...
HINT: There is an existing input for table node but it can't be referenced in this query
我不明白,我的 table 节点链接在我的搜索功能中。
这是我的 CGridview 模型许可证:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'t-license-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'siteId_search',
'value'=>'$data->install->node->f_site_id',
'header'=>'Site',
),
array(
'name'=>'installId_search',
'value'=>'$data->install->f_install_id',
'header'=>'installId',
),
[...]
),
));
我的许可证模型:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->with=array('install.node', 'install.product');
$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );
$criteria->compare( 'install.f_install_id', $this->installId_search, true );
[...]
return new CActiveDataProvider('t_licence', array(
'criteria'=>$criteria,
));
}
有什么想法吗?你可以看到我的搜索功能也调用了table install.product,我也有同样的问题。
已解决!
这是一件愚蠢的事情,我只需要改变这个
$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );
来自
$criteria->compare( 'node.f_site_id', $this->siteId_search, true );
在我的搜索中()
我按照本指南创建了一个允许搜索和排序相关模型的 cgridview: http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/
这是我的关系: 许可证 BELONGS_TO 安装 安装 BELONGS_TO 节点
我可以通过这种方式使用我的许可证的任何字段创建一个 CGridview 并安装模型。但是,我可以有节点模型的字段,但是在搜索时出现以下错误:
CDbCommand failed to execute the SQL statement: SQLSTATE[42P01]: Undefined table: 7 ERROR: invalid reference to FROM-clause entry for table node LINE 1: ...."f_product_id"="product"."f_product_id") WHERE (install.no... HINT: There is an existing input for table node but it can't be referenced in this query
我不明白,我的 table 节点链接在我的搜索功能中。
这是我的 CGridview 模型许可证:
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'t-license-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
array(
'name'=>'siteId_search',
'value'=>'$data->install->node->f_site_id',
'header'=>'Site',
),
array(
'name'=>'installId_search',
'value'=>'$data->install->f_install_id',
'header'=>'installId',
),
[...]
),
));
我的许可证模型:
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->with=array('install.node', 'install.product');
$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );
$criteria->compare( 'install.f_install_id', $this->installId_search, true );
[...]
return new CActiveDataProvider('t_licence', array(
'criteria'=>$criteria,
));
}
有什么想法吗?你可以看到我的搜索功能也调用了table install.product,我也有同样的问题。
已解决! 这是一件愚蠢的事情,我只需要改变这个
$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );
来自
$criteria->compare( 'node.f_site_id', $this->siteId_search, true );
在我的搜索中()