これは私を夢中にさせています。多くの回答とチュートリアルを読みましたが、ここで問題を特定できません。
私は 2 つのテーブルを持っています: tblEmpleadoとtblProfesion これ は、それらが持っている MySQL リレーションのイメージです (赤でマーク)
tblEmpleadoのデータを表示するときに、テーブルtblProfesionCGridView
の属性「説明」に表示したい。
claveProfesion.descripcion を無駄に使用してみました (「.descripcion」部分がなくても、FK の INT 番号が表示されます)。また、次のようなものを使用してみました:
array( 'header'=>'tableHeaderName', 'value'=>'(isset($data->claveProfesion) ? $data->claveProfesion->descripcion : null', )
「非オブジェクトのプロパティを取得しようとしています」。
モデル コードの Empleados.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(
'tblcelulars' => array(self::HAS_MANY, 'Tblcelular', 'claveEmpleado'),
'tblcuentabancos' => array(self::HAS_MANY, 'Tblcuentabanco', 'claveEmpleado'),
'idCentroTrabajo' => array(self::BELONGS_TO, 'Tblcentrotrabajo', 'idCentroTrabajo'),
'convenio' => array(self::BELONGS_TO, 'Tblconvenio', 'convenio'),
'claveProfesion' => array(self::BELONGS_TO, 'Tblprofesion', 'claveProfesion'),
);
}
そして、Admin.php View コードの CGridView 部分
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'empleados-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'claveEmpleado',
'nombreEmpleado',
'idCentroTrabajo',
array(
'header'=>'tableHeaderName',
'value'=>'($data->claveProfesion!=null) ? $data->claveProfesion->descripcion : null',
),
'aniosExperiencia',
'telefono2',
'email',
...
array(
'class'=>'CButtonColumn',
),
),
)); ?>
最後に、関連するかどうかはわかりませんが、モデルクラス"Profesiones.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(
'tblempleados' => array(self::HAS_MANY, 'Tblempleado', 'claveProfesion'),
);
}
誰でもこれで私を助けてくれますか?