Problem z funkcją search

Witam,

Mam dwie tabele, Domeny (id, domeny) i Users (id, users, domeny_id). Na podstawie poniższego kodu realizuje aby po wybraniu konkretnej domeny wyświetlało mi userów do niej przypisanych. Wszystko działa OK prócz wyszukiwania :( natomiast jak odkomentuje ‘criteria’=>$criteria, w CActiveDataProvider to wyszukiwanie działa ale za to po wybraniu domeny z tabeli users wywala mi wszystkie rekordy. Dane wyświetlam w widoku CGridView.

Poniżej kod z modelu Users oraz vidoku CGridView.





        public function search()

        {

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

                // should not be searched.


                $criteria=new CDbCriteria;


                $criteria->compare('id',$this->id);


                $criteria->compare('users',$this->users,true);


                return new CActiveDataProvider('Users', array(

                    'criteria'=>array(

                    'condition'=>'domena_id LIKE :id',

                    'params'=>array(':id'=>$_GET['id']),

                    'with'=>array('domeny'),

                    ),

//                      'criteria'=>$criteria,

                ));

        }

}








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

        'id'=>'users-grid',

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

        'columns'=>array(

                    'name'=>'users',


        ),

)); ?>




Jeśli któs mógłby mnie naprowadzić na rozwiązanie byłbym bardzo wdzięczy.

Popraw na




'condition'=>'domena_id LIKE %:id%',

'params'=>array(':id'=>$_GET['id']),


//albo na 

'condition'=>'domena_id LIKE :id',

'params'=>array(':id'=>"%".$_GET['id']."%"),



P.S. Zawsze zapominam w jaki sposób to jest zaimplementowane w Yii :)

Niestety nie pomogło :(

Udało mi się rozwiązać problem :)





        public function search()

        {

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

                // should not be searched.


                $criteria=new CDbCriteria;


                $criteria->condition = 'domena_id LIKE :id';

                $criteria->params = array(':id'=>"%".$_GET['id']."%");

                $criteria->with = array('domeny');

                $criteria->compare('users',$this->users,true);

                $criteria->compare('id',$this->id);


                return new CActiveDataProvider('Users', array(

                    'criteria'=>$criteria,

                ));

        }




Wiesz… strasznie to rozwiązanie przypomina mi moją sugestię :)

No rzeczywiście tylko kolejność musiałem zamienić :)

Mam jeszcze jeden problem, nie wiem jak zmusić kolumnę w CGridView aby nie przekraczała konkretnej szerokości, domyślnie jest, że jakby się długiego tekstu nie wrzuciło to rozwali go na pół ekranu :( Może ktoś wie jak to rozwiązać? próbowałem za pomocą htmloptions ale nieskutecznie.

Tabela w CGridView to AFAIK zwykła tabela HTML. A tak z kolei domyślnie łamie zbyt długie teksty wielolinijkowo. Sprawdź czy nie masz przypadkiem twardych spacji (nbsp) zamiast zwykłych i dlatego rozwala ci komórkę tabeli.