Всем доброго времени!
Помогите плз сделать сортировку и фильтр в gridview для столбца одного, чё-то не соображу.
У меня таблица нормально сортирует и фильтрует по связанным, а тут связь через таблицу.
То есть:
В моей таблице, для которой я делаю gridview, есть некий param_id.
Во второй таблице он является id-шником. В этой второй таблице есть свой столбец param2_id, который является id-шником в третьей таблице. Вот из третьей таблицы мне нужно вытащить поле name в мою таблицу.
Чтобы фильтровалось, сортировалось, и значения полей из третьей таблицы были вместо циферок.
Спасибо =]
Как сделать сортировку, фильтр и подстановку из связанной таблицы через таблицу?
Re: Как сделать сортировку, фильтр и подстановку из связанной таблицы через таблицу?
У вас как я понял вот такое https://github.com/githubjeka/tracker-i ... hp#L92-L96
Вот пример как делается фильтр - https://github.com/githubjeka/tracker-i ... #L153-L156, сортировка устанавливается через attributes в sort DataProvider, там есть код тоже.
Вот пример как делается фильтр - https://github.com/githubjeka/tracker-i ... #L153-L156, сортировка устанавливается через attributes в sort DataProvider, там есть код тоже.
Re: Как сделать сортировку, фильтр и подстановку из связанной таблицы через таблицу?
Спасибо за ответ.
Попробовал так сделать, но столкнулся с MySQL ошибкой Not unique table/alias,
потому что вторая таблица уже соединена с ещё одной таблицей (не описал это сразу, не думал, что будут проблемы):
table1 и table2 уже связаны так:
Так я для gridview вытаскиваю названия из table2 по айдишникам из table1. Всё работает.
Соответственно,
этот код вызывает ошибку, т.к. при попытке подконнектить table3 через table2 он понимает, что связь с table2 уже есть и она будет дублироваться.
Как быть?
Попробовал так сделать, но столкнулся с MySQL ошибкой Not unique table/alias,
потому что вторая таблица уже соединена с ещё одной таблицей (не описал это сразу, не думал, что будут проблемы):
table1 и table2 уже связаны так:
Код: Выделить всё
$query->joinWith(['table2' => function ($q) {
$q->where('table2.name LIKE "%' . $this->table2Name . '%"');
}]);
Соответственно,
Код: Выделить всё
public function getTable3s()
{
return $this->hasOne(Table3s::className(), ['id' => 'ext_id'])
->viaTable('{{%table2}}', ['id' => 'param_id1']);
}
Как быть?
Re: Как сделать сортировку, фильтр и подстановку из связанной таблицы через таблицу?
А, ну да, логично.
заменить
на просто выборку без джоинов, т.к. таблица уже джоинится там, при работе с третьей таблицей через viatable.
Спасибо, разрулил )
заменить
Код: Выделить всё
$query->joinWith(['table2' => function ($q) {
$q->where('table2.name LIKE "%' . $this->table2Name . '%"');
}]);
Код: Выделить всё
$query->andwhere('table2.name LIKE "%' . $this->table2Name . '%"');