我看到此页面添加了虚拟属性:http://www.yiiframework.com/wiki/167/understanding-virtual-attributes-and-get-set-methods/
型号:
class AdGroupKeywordSearch extends AdGroupKeyword
{
public $keyword;
public function getKeyword() {
return $keyword;
}
查看:
<?= GridView::widget([
'filterModel' => $searchModel,
'columns' => [
[
'attribute' => 'keyword.keyword',
控制器:
public function actionIndex()
{
$searchModel = new AdGroupKeywordSearch();
它用于显示关系,但它不显示用于输入值的文本框。
答案 0 :(得分:2)
我不得不添加到搜索模型中:
public function attributes()
{
// add related fields to searchable attributes
return array_merge(parent::attributes(), ['keyword.keyword']);
}
和
public function rules() {
return [
[['keyword.keyword'], 'string'],
而不是[['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]);
非常奇怪,你必须使用keyword.keyword
而不能只使用像keyword
这样的虚拟属性。