GridView para relacionamento HAS_MANY

Fala galera, blz?

Estou com o seguinte problema …

Queria montar uma Gridview que me mostrasse todos os funcionarios de um determinado centro de custo, no caso tenho as seguintes tabelas:

gop_mee_centro_custo -> possui o cadastro dos centros de custos e suas informações

gop_mee_smmateqe -> possui o cadastro dos funcionarios, e uma foreign key ‘nr_rs’ para se relacionar com centro de custo

o que fiz até agora:

GopMeeCentroCusto.php




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(

			'funcionarios'=>array(self::HAS_MANY, 'VwMatEmpregado', 'nr_rs'),

		);

	}


public function primaryKey(){

		return 'centro_custo';

	}



dai tentei montar o GridVIew na view index.php




$criteria = new CDbCriteria();

	$criteria->condition = 'centro_custo=:nr_rg';

	$criteria->params = array(':nr_rg'=>56170);

	$criteria->with = array('funcionarios'=>array('joinType'=>'INNER JOIN'));

	

	//$teste = GopMeeCentroCusto::model()->findAll($criteria);

	

	//var_dump($teste);

	

	$teste2 = new CActiveDataProvider('GopMeeCentroCusto', array(

			'criteria'=>$criteria,

		));

		

		var_dump($teste2);

	

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

    'id'=>'person-grid2',

    'dataProvider'=>$teste2,

    //'filter'=>$model,

	//'cssFile'=> Yii::app()->baseUrl . '/css/ricardo.css',

	//'htmlOptions' => array('class' => 'grid-view rounded'),

    'pager'=>array(

        'header'=>'',

        'firstPageLabel'=>'<<',

        'prevPageLabel'=>'anterior',

        'nextPageLabel'=>'proximo',

        'lastPageLabel'=>'>>',

    ),

    

    'columns'=>array(

    	array(

	         'name' =>'funcionarios.nr_rs',

	         'value' => '$data->funcionarios->nr_rs',

         ),

        array(

	         'name' =>'funcionarios.nm_empregado',

	         'value' => '$data->funcionarios->nm_empregado',

         ), 

			

    

    ),

));



POrém não consigo trazer os dados da tabela relacionada, no maximo apenas uma linha com as informações do centro de custo … porém acredito que meu relacionamento esta correto por que se usso o mesmo criterio e utilizo um findAll, dando um var_dump todos os funcionarios do centro de custo aparecem, da seguinte forma:





$criteria = new CDbCriteria();

	$criteria->condition = 'centro_custo=:nr_rg';

	$criteria->params = array(':nr_rg'=>56170);

	$criteria->with = array('funcionarios'=>array('joinType'=>'INNER JOIN'));

	

	$teste = GopMeeCentroCusto::model()->findAll($criteria);

	

	var_dump($teste);



Estou fazendo algo errado? existe uma maneira mais legal de fazer?

Agradeço a todos que puderem ajudar … abs

Ao invez de fazer uma pesquisa em GopMeeCentroCusto e trazer o relacionamento de VwMatEmpregado, faz a pesquisa em VwMatEmpregado e traz GopMeeCentroCusto relacionado.

Quando vc faz uma pesquisa em GopMeeCentroCusto, o Yii entende que vc requer GopMeeCentroCustosem os dados dele duplicados. Então ele pega o resultado do SQL e retorna apenas os não duplicados.

Daniel, realmente funcionou! Muito obrigado

Pelo jeito no yii a ordem dos fatores altera o resultado né?!? kkkkkk …

de qualquer forma obrigado mais uma vez …

abraço