CGridView или CActiveDataProvider со связями

Привет всем

есть такие связи




       'parentDomain' => array(self::BELONGS_TO, 'Domain', 'idParentDomain'),

       'domains' => array(self::HAS_MANY, 'Domain', 'idParentDomain'),

       'categories' => array(self::MANY_MANY, 'Category', 'Domain_has_Category(Domain_id, Category_id)'),

       'keywords' => array(self::MANY_MANY, 'Keyword', 'Domain_has_Keyword(Domain_id, Keyword_id)'),

       'portfolios' => array(self::MANY_MANY, 'Portfolio', 'Domain_has_Portfolio(Domain_id, Portfolio_id)'),



с отображением данных проблем нет

а вот как реализовать поиск в Domain::search() если я как фильтр использую скажем parentDomain или keywords

скажем найти все домены принадлежащие указанному домену, или найти все домены котрые имеют похожее ключевое слово.

Может кто нибудь помочь примером или натолкнуть на мысль правильную? Третий день бьюсь ничего не получается.

И еще вопрос как инициализируется модель при поиске?




    public function search() {

        // Warning: Please modify the following code to remove attributes that

        // should not be searched.


        $criteria=new CDbCriteria;


        var_dump($this->id);

        if($this->id!='') {

            $criteria->addCondition('id=:id');

            $criteria->params[':id']=$this->id;

        }



вставленный var_dump всегда возвращет null. Даже если я что ввел в поле id.

Спасибо.

Вопрос снимаю - разобрался

нужно было смотреть в AJAX ответ а не на страницу

фуух теперь и поиск по связям сделать можно…

мда таки есть проблема в рендеринге атрибутов которые имет связи HAS_MANY или MANY_MANY




<?php $this->widget('zii.widgets.grid.CGridView', array(

        'dataProvider'=>$model->search(),

        'filter'=>$model,

        'columns'=>array(

                'id',

                'url',

                array( // не работает

                    'name'=>'portfolios',

                    'value'=>'$data->portfolios[0]->name',

                    'sortable'=>false

                ),

                'status',

                'registar',

                array( // работает

                    'name'=>'parentDomain',

                    'value'=>'$data->parentDomain->url',

                    'sortable'=>false

                ),

                array(

                    'class'=>'CButtonColumn',

                    'template' => '{view} {organize}',

                    'buttons' => array(

                        'organize' => array(

                            'label'=> 'Organize',

                            'url' => 'Yii::app()->controller->createUrl("organize",array("id"=>$data->primaryKey))',

                            'imageUrl' => Yii::app()->baseUrl.'/images/icons/orginize_icon.png'

                        )

                    )

                )

        ),

)); ?>



Получаю ошибку

htmlspecialchars() expects parameter 1 to be string, array given

и спрашивается чего я ее получаю если Все что требуется это взять текстовую метку для указанного оттрабута (portfolios) и отрендерить указанные данные

ааа…все понятно а заголовке от модели рендерится CHtml::activeTextField

придется искать обходные пути

решил проблему путем использования вспомогательных аттрибутов - специально для поиска

все работае - вот только я почему то уверен что это не оптимальное решение

Where to get a free ico maker?