Suche nach einem Begriff in einer Fremdschlüssel-Spalte in Gridview funktioniert nicht

Suche nach einem Begriff in einer Fremdschlüssel-Spalte in Gridview funktioniert nicht.

Hier ist das Szenario:

Database:




  tbl_carmanufacturer:


  `id` int(11) unsigned NOT NULL auto_increment,

  `abbr` varchar(20) NOT NULL,             -- car manufacturer, abbreviation

  `designation` varchar(25) default NULL,  -- car manufacturer, designation

  `description` text default NULL,         -- car manufacturer, description




 tbl_cartype:

  `id` int(11) unsigned NOT NULL auto_increment,

  `carmanufacturer_id` int(11) unsigned ,

  `abbr` varchar(25) NOT NULL,             -- car type, abbreviation

  `designation` varchar(50) default NULL,  -- car type, designation

  `description` text default NULL,         -- car type, description



Model




class Cartype extends  CActiveRecord

{

  .

  .

  .

  public function relations()

  {

  // NOTE: you may need to adjust the relation name and the related

  // class name for the relations automatically generated below.

    return array(

 	'carmanufacturer' => array(self::BELONGS_TO, 'Carmanufacturer', 'carmanufacturer_id'),

	'createUser' => array(self::BELONGS_TO, 'User', 'create_user_id'),

	'updateUser' => array(self::BELONGS_TO, 'User', 'update_user_id'),

	);

  }

  .

  .

  .


  public function search()

  {


    $criteria=new CDbCriteria;

    $criteria->with = array(

    'carmanufacturer' ,

    );

   

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

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

    $criteria->compare('carmanufacturer.designation',$this->carmanufacturer,true);

    $criteria->compare('t.abbr',$this->abbr,true);

    $criteria->compare('t.designation',$this->designation,true);

    $criteria->compare('t.fulldesignation',$this->fulldesignation,true);		


    $sort = new CSort;

    $sort->attributes = array(

       'carmanufacturer' => array(

          'asc' => 'carmanufacturer.designation',

          'desc' => 'carmanufacturer.designation DESC',

        ),


       '*',

    );


   return new CActiveDataProvider(get_class($this), array(

	'criteria'=>$criteria,

	 'pagination'=>array(

	         'pageSize'=>10

	   ),


	'sort'=>$sort,


	));

   }


  public $carmanufacturer_name;

  

  public function afterFind() {	

   $this->carmanufacturer_name = $this->carmanufacturer->designation;

  }

	

}



views\cartype\admin.php





  .

  .

  .




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

 'id'=>'cartype-grid',

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

  'filter'=>$model,

  'columns'=>array(

		'id',

    //'carmanufacturer_id',

     array(

     'name'=>'carmanufacturer',

     'type' => 'raw',

     'value'=>'$data->carmanufacturer->designation',


     ),

		

    'abbr',

    'designation',

   //'description',

    array(

    'class'=>'CButtonColumn',

    ),

  ),

)); 




Soweit funktioniert alles gut, nur: wenn ich auf dem admin-Formular einen

Suchbegriff in der Fremdschlüssel-Spalte eintippe und danach suche, ändert

sich nichts am Grid, d.h., es werden genau dieselben Zeilen nach der Suche

wie vor der Suche im Grid angezeigt obwohl die Suche ein anderes result set

liefern sollte. Sieht vielleich jemand von euch Experten wo mein Fehler liegt?

Bin für jede Hilfe äußerst dankbar.

Hi,

hab mir das jetzt nur mal grob angeschaut, aber probier mal in views\cartype\admin.php den folgenden Code:




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

 'id'=>'cartype-grid',

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

  'filter'=>$model,

  'columns'=>array(

                'id',

    //'carmanufacturer_id',

 	array(

 	'name'=>'carmanufacturer',

	'value'=>'$data->carmanufacturer ? $data->carmanufacturer->designation : \'\'',


 	),

                

    'abbr',

    'designation',

   //'description',

    array(

    'class'=>'CButtonColumn',

    ),

  ),

));