Php 如何在Yii中为GridView中的关系添加筛选器?

Php 如何在Yii中为GridView中的关系添加筛选器?,php,gridview,yii2,Php,Gridview,Yii2,我看到了添加虚拟属性的页面: 型号: class AdGroupKeywordSearch extends AdGroupKeyword { public $keyword; public function getKeyword() { return $keyword; } 视图: 它用于显示关系,但不显示用于输入值的文本框 我不得不在搜索模型中添加: public function attributes() { // add related fiel

我看到了添加虚拟属性的页面:

型号:

class AdGroupKeywordSearch extends AdGroupKeyword
{
  public $keyword;

  public function getKeyword() {
    return $keyword;
  }
视图:

它用于显示关系,但不显示用于输入值的文本框


我不得不在搜索模型中添加:

  public function attributes()
  {
      // add related fields to searchable attributes
      return array_merge(parent::attributes(), ['keyword.keyword']);
  }

而不是
[['keyword'],'string'],

这将得到要显示的文本框。为了让搜索正常工作,我必须在控制器(或数据提供程序)中使用

而不是

$query = AdGroupKeyword::find()->with('keyword');

而不是

$query->andFilterWhere(['like', 'keyword', $searchModel->keyword]);
非常奇怪的是,您必须使用
关键字.keyword
,并且不能只使用像
关键字这样的虚拟属性

  public function rules() {
    return [
      [['keyword.keyword'], 'string'],
$query = AdGroupKeyword::find()->joinWith('keyword');
$query = AdGroupKeyword::find()->with('keyword');
$query->andFilterWhere(['like', 'keyword', $searchModel->getAttribute('keyword.keyword')]);
$query->andFilterWhere(['like', 'keyword', $searchModel->keyword]);