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 !