Yii: CgridView через несколько отношений

Я следую этому руководству, чтобы создать 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, у меня такая же проблема.

0

Решение

Решено!
Это было глупо, я просто должен был изменить это

$criteria->compare( 'install.node.f_site_id', $this->siteId_search, true );

от

$criteria->compare( 'node.f_site_id', $this->siteId_search, true );

в моем поиске ()

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]