Я следую этому руководству, чтобы создать cgridview, позволяющий искать и сортировать связанную модель:
http://www.yiiframework.com/wiki/281/searching-and-sorting-by-related-model-in-cgridview/
Вот мои отношения:
лицензия BELONGS_TO установить
установить узел BELONGS_TO
Таким образом, я могу создать CGridview с любым полем моей лицензии и установить модели. Тем не менее, я могу иметь поля модели узла, но у меня есть следующая ошибка при поиске на нем:
CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42P01]: неопределенная таблица: 7 ОШИБКА: неверная ссылка на запись предложения FROM для узла таблицы
ЛИНИЯ 1: …. «f_product_id» = «product». «F_product_id») ГДЕ (install.no …
СОВЕТ: существует существующий вход для узла таблицы, но на него нельзя ссылаться в этом запросе
Я не понимаю, мой узел таблицы связан с моей функцией поиска.
Вот мой 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,
));
}
Любая идея? Вы можете видеть, что моя функция поиска также вызывает таблицу install.product, у меня такая же проблема.
Решено!
Это было глупо, я просто должен был изменить это
$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );
от
$criteria->compare( 'node.f_site_id', $this->siteId_search, true );
в моем поиске ()
Других решений пока нет …