Yii2框架:GridView,使用另一个具有间接关系的平板电脑的数据创建新列
我需要你的帮助。 我使用的是Yii 2框架,我用Gii生成我的模型、控制器和视图 我有一个包含3个表的数据库。我的数据库模型如下: 现在,在“colaborador”的Gridview中,我想用“carreira”表中的数据创建一个新列。 这些值必须以这种方式填写:“colaborador”有一个属于“carreira”的“CategoriaProfessional”。 因此,表“colaborador”中的atribute“categoriaproficial_fk”允许访问“categoriaproficial”,该表具有访问“carreira_fk”的外键 我很难找到解决这个问题的办法 这是我对“colaborador”的索引视图: 它没有崩溃,但结果不是预期的(或者我的愿望是什么:) 过滤器中填充了正确的值。 行中填充了Category profissional_fk,我希望Category profissional_fk作为Category profissional fk.carreira_fk中obain的相关属性(与我在最后一列(Category a profissional)中获得Category profissional fk.carreira_fk的方式相同)用作categoriaprofissional::get_carreira('categoriaprofissionalFk.carreira_fk')函数的参数 我需要你的帮助。 多谢各位Yii2框架:GridView,使用另一个具有间接关系的平板电脑的数据创建新列,gridview,relational-database,yii2,Gridview,Relational Database,Yii2,我需要你的帮助。 我使用的是Yii 2框架,我用Gii生成我的模型、控制器和视图 我有一个包含3个表的数据库。我的数据库模型如下: 现在,在“colaborador”的Gridview中,我想用“carreira”表中的数据创建一个新列。 这些值必须以这种方式填写:“colaborador”有一个属于“carreira”的“CategoriaProfessional”。 因此,表“colaborador”中的atribute“categoriaproficial_fk”允许访问“categor
<?= GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'numerofuncionario',
'nome',
//now this is the new column that i want to create
[
'label' => 'Carreira',
'attribute' => 'categoriaprofissional_fk',
'value' => categoriaprofissional::get_carreira('categoriaprofissionalFk.carreira_fk'),
'filter'=> categoriaprofissional::get_carreiras(),
],
//this is the "categoriaprofissional" related directly with "colaborador" and works perfectly!
[
'attribute' => 'categoriaprofissional_fk',
'value' => 'categoriaprofissionalFk.nome',
'filter'=> categoriaprofissional::get_nomes(),
],
[
'class' => 'yii\grid\ActionColumn',
'template' => '{view}',
],
],
]); ?>
public static function get_nomes(){
$cat = Categoriaprofissional::find()->orderBy(['nome' => SORT_ASC])->all();
$cat = ArrayHelper::map($cat, 'idcategoriaprofissional', 'nome');
return $cat;
}
public static function get_carreira($id){
$car = Carreira::find()->where(['idcarreira' => $id])->one();
return $car;
}
public static function get_carreiras(){
$cars = Carreira::find()->orderBy(['nome' => SORT_ASC])->all();
$cars = ArrayHelper::map($cars, 'idcarreira', 'nome');
return $cars;
}
/**
* @return \yii\db\ActiveQuery
*/
public function getCarreiraFk()
{
return $this->hasOne(Carreira::className(), ['idcarreira' => 'carreira_fk']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getColaboradors()
{
return $this->hasMany(Colaborador::className(), ['categoriaprofissional_fk' => 'idcategoriaprofissional']);
}