Ajax 在yii2gridview中,我想显示值来代替外键id

Ajax 在yii2gridview中,我想显示值来代替外键id,ajax,gridview,datagridview,Ajax,Gridview,Datagridview,请告诉我显示外键值代替id所需更改的详细过程和文件,如下面的快照所示: 我的场景是我有两个表1)屏幕和2)子屏幕表 表Screen有两个文件screenId和screenName 表SubScreen在SubScreen表的视图中有subscreenId subscreenName和Screen_ScreenId(作为外键)。我想显示屏幕名(来自屏幕表)来代替屏幕_ScreenId(来自SubScreen表视图)最后,我找到了一个显示外键值而不是外键id的解决方案:我发布了此解决方案,以便其他

请告诉我显示外键值代替id所需更改的详细过程和文件,如下面的快照所示:

我的场景是我有两个表1)屏幕和2)子屏幕表 表Screen有两个文件screenId和screenName
表SubScreen在SubScreen表的视图中有subscreenId subscreenName和Screen_ScreenId(作为外键)。我想显示屏幕名(来自屏幕表)来代替屏幕_ScreenId(来自SubScreen表视图)

最后,我找到了一个显示外键值而不是外键id的解决方案:我发布了此解决方案,以便其他面临相同问题的人可以使用此方法在他们的代码中实现此功能

在模型类中,需要在我的案例中创建一个关系函数: 我的模型类是Subscreen.php,它有一个关系函数

public function getScreenScreen()
{
    return $this->hasOne(Screen::className(), ['screenId' => 'Screen_ScreenId']);
}
上述功能是在使用gii模块生成模型时自动生成的。 我在模型中做的额外工作是添加一个函数代码,如下所示

public function getScreenName()
    {
              return $this->screenScreen->screenName;
    }
-------------------------模型的改变就在这里结束了-----------------------------

现在来看视图的_columns.php文件,该文件是在使用Ajax CRUD生成器扩展生成CRUD代码时自动生成的

上面代码'value'=>function($model){return$model->getScreenName();}中的最后一行是我添加的,作为在视图中获取功能的额外一行…这使我能够在视图中显示屏幕名而不是其Id。 希望这能帮助你解决同样的问题

[
    'class'=>'\kartik\grid\DataColumn',
    'attribute'=>'Screen_ScreenId',
    'value'=>function($model){return $model->getScreenName();},

],