Consulta na tabela relacionada como faz?

Ahe galera como fazer uma consulta em uma tabela que esta relacionada ao model. Exemplo eu tenho um model que se relaciona com o representante, na tabela tem um campo id, so que na busca gostaria que busca-se pelo nome do representante ja tentei this->representante->nome mais nao esta dando certo, alguem pode me ajudar




public function search()

	{

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

		// should not be searched.


		$criteria=new CDbCriteria;

                if($this->pesquisar == ''){

                    

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

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

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

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

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

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


                }else{

            

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

                        $criteria->compare('idrepresentante',$this->pesquisar,true,'OR');// Gostaria que aqui fosse buscar na tabela relaciona pelo nome

                        $criteria->compare('data_cadastro',$this->pesquisar,true,'OR');

                        $criteria->compare('status',$this->pesquisar,true,'OR');

                        $criteria->compare('data_envio',$this->pesquisar,true,'OR');

                       $criteria->compare('rastreamento',$this->pesquisar,true,'OR');


                }

                $criteria->order = 'id DESC';

           

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

                        'criteria'=>$criteria,

                        'pagination'=>array(

                        'pageSize'=>Yii::app()->params['PageSize'],

                ),

		));

	}

}

Algo como


$criteria->with = array('representante'=>array('together'=>true));

e depois usar como


$this->representante->nome

acredito que funcionaria

Esta retornando este erro:

A propriedade "CBelongsToRelation.together" não está definida.

cara, eu nunca usei pra search, mas se fosse pra um select normal seria algo como o seguinte, ve o que consegue tirar dae




$criteria = new CDbCriteria();

$criteria->where = '1=1';


MyModel::model()->with(

  'representante'=>array('select'=>'nome'),

  'outra_relacao'=>array('select'=>'outro_campo'),

  )->findAll($criteria);


public function search(){

  $criteria=new CDbCriteria;

  

  if($this->pesquisar == ''){

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

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

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

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

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

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

  }

  else {

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

    $criteria->compare('repr.nome',$this->pesquisar,true,'OR');// Chutei o campo da tabela

    $criteria->compare('data_cadastro',$this->pesquisar,true,'OR');

    $criteria->compare('status',$this->pesquisar,true,'OR');

    $criteria->compare('data_envio',$this->pesquisar,true,'OR');

    $criteria->compare('rastreamento',$this->pesquisar,true,'OR');

  }

  

  // Lembrando que aqui, o "Representante" é o nome do objeto e não o da tabela.

  // Vc vai precisar especificar o alias pra poder usar ele no compare acima, pq lá vc diz o nome do alias, e não do objeto.

  $criteria->with = array(

    'Representante'=>array('together'=>true, 'alias'=>'repr')

  );

  

  $criteria->order = 'id DESC';

   		

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

    'criteria'=>$criteria,

    'pagination'=>array(

      'pageSize'=>Yii::app()->params['PageSize'],

    ),

  ));

}

Quanto ao erro "CBelongsToRelation.together" não está definida, verifique se vc não colocou a chave do relacionamento como o nome da tabela.

Se vc já tem relations com o objeto representantes, seria mais fácil vc adicionar só o alias no relation e usar o "with" como abaixo:




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