请告诉我详细的流程和文件,需要进行哪些更改才能显示外键值而不是id,如下图所示:
Data Gridview generated using Ajax Crud Generator
我的场景是我有两个表1)屏幕和2) SubScreen表,表屏幕有两个文件screenId和screenName,表SubScreen在SubScreen表的视图中有subscreenId subscreenName和Screen_ScreenId (作为外键)我想显示screenName (来自屏幕表)而不是Screen_ScreenId ( SubScreen表视图)
发布于 2017-04-09 23:02:52
最后,我找到了一个显示外键值而不是外键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 Generator扩展生成Crud代码时自动生成的。
..。
[
'class'=>'\kartik\grid\DataColumn',
'attribute'=>'Screen_ScreenId',
'value'=>function($model){return $model->getScreenName();},
],..。
上面代码'value'=>function($model) {return $ ScreenName ->getScreenName();}中的最后一行是我添加的,作为额外的一行,以便在视图中显示ScreenName而不是它们的Id。希望这能帮助你解决同样的问题……
https://stackoverflow.com/questions/43305028
复制相似问题