首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在yii2网格视图中,我希望显示值而不是外键ids

问在yii2网格视图中,我希望显示值而不是外键ids
EN

Stack Overflow用户
提问于 2017-04-09 17:13:45
回答 1查看 226关注 0票数 0

请告诉我详细的流程和文件,需要进行哪些更改才能显示外键值而不是id,如下图所示:

Data Gridview generated using Ajax Crud Generator

我的场景是我有两个表1)屏幕和2) SubScreen表,表屏幕有两个文件screenId和screenName,表SubScreen在SubScreen表的视图中有subscreenId subscreenName和Screen_ScreenId (作为外键)我想显示screenName (来自屏幕表)而不是Screen_ScreenId ( SubScreen表视图)

EN

回答 1

Stack Overflow用户

发布于 2017-04-09 23:02:52

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

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

代码语言:javascript
复制
public function getScreenScreen()
{
    return $this->hasOne(Screen::className(), ['screenId' => 'Screen_ScreenId']);
}

上述函数是在使用gii模块生成模型时自动生成的。我在模型中额外添加了一个函数代码,如下所示

代码语言:javascript
复制
public function getScreenName()
    {
              return $this->screenScreen->screenName;
    }

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

..。

代码语言:javascript
复制
[
    'class'=>'\kartik\grid\DataColumn',
    'attribute'=>'Screen_ScreenId',
    'value'=>function($model){return $model->getScreenName();},

],

..。

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43305028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档