Фильтрация данных GridView

202
19 декабря 2016, 19:27

Есть таблица вывода данных GridView, нужно сделать фильтр данных по условию: если в одной Модели1 значение записи равно значению записи в Модели2, то выводить записи в таблице. Модели никак не связаны между собой.

Т.е., получается, что нужно сравнить данные из двух несвязанных таблиц.

Как такое реализовать?

Answer 1
$models = Model1::find()
    //...
    ->all();
$model2 = Model2::find()
    ->select(['column'])
    //...
    ->asArray()
    ->column();
$model2 = array_flip($model2);
$models = array_filter($models, function($item) use ($model2) {
    return array_key_exists($item['column'], $model2);
});

В итоге $models будет содержать только те элементы которые содержаться в $model2.

Но как вы собираетесь строить paging? Я бы использовал join в sql запросе чтобы отсечь все ненужные элементы ещё на уровне db.

READ ALSO
Выделение поддомена при регистрации

Выделение поддомена при регистрации

Нужно выделять для каждого зарегистрированного пользователя поддомен, при регистрации

169
Как отправить сообщение на Viber?

Как отправить сообщение на Viber?

Хочу со своего сайта или десктоп/мобайл приложения отправить сообщение на вайбер

255
if в теге input

if в теге input

Есть вот такой цикл:

227
Не могу разобрать массив

Не могу разобрать массив

Как получить элемент data:ProtocolNode:private?

230