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]);