2015-12-09 37 views
0

我有一个GridView,其中我有另一个tablerelation的记录。所以我有ids在一个column我从table &获取标题根据ids显示在column中。现在,当我通过绑定标题名称搜索标题时,它不是filtering,但是当我使用ids时,它正在过滤。Yii2如何在列字段有ID的情况下在gridview中搜索记录

我的问题是我如何filtercolumn其中有ids它的字符串或标题名?

示例代码

<?= GridView::widget([ 
    'dataProvider' => $dataProviderAlreadyAssigned, 
    'filterModel' => $searchModel, 
    'columns' => [ 
    ['class' => 'yii\grid\SerialColumn'], 
     [ 
      'attribute' => 'fk_library', //this is a foreign key i.e. id of library 
      'label'  => 'Library', 
      'format' => 'raw', 
      'value' =>function($data) { 
       return $data->fkTopic->fkSubject->fkCategory->fkCatalog->fkLibrary->library_name != null ? ucfirst($data->fkTopic->fkSubject->fkCategory->fkCatalog->fkLibrary->library_name) : ""; 
      } 
     ], 
     [ 
      'class'  => 'yii\grid\ActionColumn', 
      'template' => '{delete}', 
     ], 
    ], 
]); 

我想filter库通过这里的库名,它是由库ID工作时,我filter

+0

请提供最小的代码段,以重现该问题。 –

+0

谢谢,我添加了示例代码。 –

+0

您必须为该属性添加自定义的“过滤器” –

回答

1

例如,

$names = Library::find()->asArray()->all(); 
    [ 
     'attribute' => 'fk_library', //this is a foreign key i.e. id of library 
     'label'  => 'Library', 
     'format' => 'raw', 
     'value' =>function($data) { 
      return $data->fkTopic->fkSubject->fkCategory->fkCatalog->fkLibrary->library_name != null ? ucfirst($data->fkTopic->fkSubject->fkCategory->fkCatalog->fkLibrary->library_name) : ""; 
     } 
'filter' => Arrayhelper::map($names, 'lib_id', 'library_name'); 
], 
相关问题