Исходя из этого:
Yii2, как работает search() в SearchModel?
Я хотел бы иметь возможность фильтровать столбец GridView
реляционных данных. Это то, что я имею в виду:
У меня есть две таблицы, TableA
и TableB
. У обоих есть соответствующие модели, сгенерированные с помощью Gii. TableA
имеет внешний ключ для значения в TableB
, например:
TableA
attrA1, attrA2, attrA3, TableB.attrB1
TableB
attrB1, attrB2, attrB3
attrA1 и attrB1 являются первичными ключами соответствующих им таблиц.
Теперь у меня есть Yii2 GridView
из attrA2
, attrA3
и attrB2
. У меня есть рабочий фильтр для attrA2
и attrA3
, так что я могу выполнять поиск по значениям столбцов. У меня также есть рабочая сортировка для этих двух столбцов - просто щелкнув заголовок столбца. Я хотел бы иметь возможность добавить эту фильтрацию и сортировку и на attrB2
.
Моя модель TableASearch
выглядит так:
public function search($params){
$query = TableA::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
if (!($this->load($params) && $this->validate())) {
return $dataProvider;
}
$this->addCondition($query, 'attrA2');
$this->addCondition($query, 'attrA2', true);
$this->addCondition($query, 'attrA3');
$this->addCondition($query, 'attrA3', true);
return $dataProvider;
}
В моей модели TableA
я установил соответствующее значение следующим образом.
public $relationalValue;
public function afterFind(){
$b = TableB::find(['attrB1' => $this->attrB1]);
$this->relationalValue = $b->relationalValue;
}
Хотя это, вероятно, не лучший способ сделать это. Я думаю, что мне нужно использовать $relationalValue где-то в моей функции поиска, но я не уверен, как это сделать. Точно так же я хотел бы иметь возможность сортировать и по этому столбцу - точно так же, как я могу для attrA2
и AttrA3
, щелкнув ссылку в заголовке`. Любая помощь будет оценена по достоинству. Спасибо.