После этого:
Yii2 Как работает поиск() в 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
, нажав на ссылку заголовка`. Любая помощь будет оценена по достоинству. Спасибо.