Aceder ao join no CGridView

Model EncomendaLinha:


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(

			'encomenda' => array(self::BELONGS_TO, 'Encomenda', 'encomenda'),

			'style' => array(self::BELONGS_TO, 'Ritmo', 'style'),

		);

	}

EncomendaController:


public function actionIndex()

	{

		

                

		

                $encomendaLinhasProvider = new CActiveDataProvider('EncomendaLinha', array(

                    'criteria' => array(

                        'condition' => 'encomenda=:encomenda',

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

                       

                    ),

                    'pagination' => array(

                        'pageSize' => 10,

                    ),

                ));

                

		$this->render('index',array(

			

                        'encomendaLinhasProvider'=>$encomendaLinhasProvider

		));

	}

Na view:


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

	'id'=>'encomenda-linha-grid',

	'dataProvider'=>$encomendaLinhasProvider,

	'columns'=>array(

		 array(            

            'name'=>'Style',

            'value'=>'$data->style->artist',

        ),

	),

)); ?>

Erro:

Trying to get property of non-object

Pergunta:

Porque é que não consigo aceder ao style através do metodo relations dentro do value da CGridView?

O valor retornado é nulo, por isso que está dando essa mensagem. Verifique se esse $_GET está retornando algum valor. Você também pode adicionar essa propriedade no CGridView


  'nullDisplay'=>'Valor nulo'

Sim está eu testei na actionIndex com :


 $teste=$_GET['encomenda'];

e teste ficou com o valor 6

Ok acho que o problema era da relação com o nome style era o nome tambem de um atributo.Mudei o nome para ritmo,ficou assim:


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(

			'encomenda' => array(self::BELONGS_TO, 'Encomenda', 'encomenda'),

			'ritmo' => array(self::BELONGS_TO, 'Ritmo', 'style'),

		);

	}

Só que agora dá-me este erro:

include(Ritmo.php) [<a href=‘function.include’>function.include</a>]: failed to open stream: No such file or directory

O framework não acho a class Ritmo.php na pasta model.