ayuda tbgridview(bootstrap) para mostrar join de tablas

Hola soy practicamente nuevo en el yii y quisiera un poco de ayuda.

entre todas las tablas de mi base de datos lo que intento hacer es con las siguientes tablas:

pc

personal

pc_persona

la tabla pc contiene la informacion relevante al equipo de computo,

la tabla personal con tiene la informacion de los empleados,

y la tabla pc_persona contiene la informacion sobre a que computadora tiene asignada cada empleado (para este caso solo manejo el ID de pc y el ID de empleado).

en la vista "admin" de esta ultima tabla quiero hacer un join que con el id pc y empleado me jale ciertos campos qe necesito de esa tabla.

Pero no consigo que esto funcione, despues de varios cambios y tratar de solucionarlo me dice que "Marca" (campo de la tabla pc) no es un propiedad de PcPersona.

Realizo la consulta por separado y si mi arroja lo datos que quiero, pero en la vista no…

En mi codigo solo tengo el join de la tabla pc_persona con la tabla pc porque empece de menos a mas, cuando me quedara ese join iba a hacer el join con la tabla de personal.

esta es mi vista admin:


<h1>Asignaciones PCs</h1>


<?php $this->widget('bootstrap.widgets.TbGridView',array( //aqui es donde quiero mostrar el join de la tabla pc_persona con la tabla pc

	'id'=>'pc-persona-grid',

	'dataProvider'=>$dataProvider,

	

	'filter'=>$model,

	'columns'=>array(

		  array(

		  		'header'=>'id pc',

		  		'name'=>'id_pc',

		  		'value'=>'$data["id_pc"]'

		  		),


		  array(

		  		'header'=>'id del personal ',

		  		'name'=>'id_personal',

		  		'value'=>'$data["id_personal"]'

		  		),

		  array(

		  		'header'=>'Marca',

		  		'name'=>'Marca',

		  		'value'=>'$data["Marca"]'

		  		),

		  array(

		  		'header'=>' Modelo',

		  		'name'=>'Modelo',

		  		'value'=>'$data["Modelo"]'

		  		),

		  array(

		  		'header'=>'Numero de serie',

		  		'name'=>'num_serie',

		  		'value'=>'$data["num_serie"]'

		  		),




		


		array(

			'class'=>'bootstrap.widgets.TbButtonColumn',

		),

	),

));


 ?>



este es mi controlador para la vista admin:


public function actionAdmin()

	{

		

	$model=new PcPersona;

	if(isset($_GET['PcPersona']))

		$model->attributes=$_GET['PcPersona'];

		$sql= "SELECT pc_persona.id_pc, pc_persona.id_personal, pc.Marca, pc.Modelo, pc.num_serie FROM pc_persona JOIN pc ON (pc_persona.id_pc=pc.idPC)";


		$rawData=Yii::app()->db->createCommand($sql)->queryAll();

		$dataProvider=new CArrayDataProvider($rawData, array(

			'id'=>'pc_personagrid',


			'sort'=>false,

			'pagination'=>false,

			

			));


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

			'model'=>$model,

			'dataProvider'=>$dataProvider

			)

		);

	}

estas las relaciones de mi modelo


public function relations()

	{

		return array(

			

			'idPc' => array(self::BELONGS_TO, 'Pc', 'id_pc'),

			'idPersonal' => array(self::BELONGS_TO, 'Personal', 'id_personal'),

			'marca' => array(self::BELONGS_TO, 'Pc', 'Marca'),

			'modelo' => array(self::BELONGS_TO, 'Pc', 'Modelo'),

			'numSerie' => array(self::BELONGS_TO, 'Pc', 'num_serie'),


			

        	


		);

	}

y la funcion search del modelo:


public function search()

	{

		$criteria=new CDbCriteria;


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

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

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


		return new CActiveDataProvider($this, array(

			'criteria'=>$criteria,

		));

	}

Espero me puedan ayudar, en verdad lo necesito !

Tienes que leerte esto y entenderlo muy bien,

http://www.yiiframework.com/doc/guide/1.1/en/database.arr

cuesta un poco empezar, pero luego te das cuenta de lo potente que es yii

Intenta cambiar donde tienes $data["Marca"] por $data->Pc->Marca

Y quita las relaciones marca, modelo y numSerie.

Si he entendido correctamente lo que tienes ahí organizado, eso debería funcionar.

Pero aún asi te recomiendo que te imprimas ese enlace y le eches un ojo con calma, hay mucha ciencia ahi :D

un saludo.

Edito,

las relaciones de PcPersona te deberían quedar asi:




public function relations()

        {

                return array(

                        

                        'Pc' => array(self::BELONGS_TO, 'Pc', 'id_pc'),

                        'Persona' => array(self::BELONGS_TO, 'Personal', 'id_personal'),

                


                );

        }



Gracias por contestar, Dare una leida a eso que me dices.

De todas formas te comento que la opcion que me diste no me funciono, me sigue mandando el mismo mensaje de error de que no encuentra la propiedad

:S

jaja

Gracias, si resulto ser como mencionaste,conforme a lo que me mencionaste y despues de leer la guia que publicaste, solo tenia que acomodar unas cosas y listo…

pero ahora el detalle que los campos para filtrar la informacion no aparecen,

tendras algun consejo?

:S !