Можно ли заставить GridView не выполнять лишние запросы к связанным таблицам?
Добавлено: 2017.08.23, 03:36
(Абстрактно)
Есть 2 модели:
User (user_id, country_id, user_name)
Country(country_id, name)
В модели User есть связь с моделью Country:
и геттер для имени страны
В dataProvider при извлечении данных исполбьзуем Join:
Так вот, в чем вопрос. Если в ячейке GridView задать атрибут country_name, фреймворк начнет ломиться в базу с запросами вида
P.S. не нужно мне говорить, что данные отдает Getter, а там связь. Я сам это всё знаю. Вопрос - как приучить GridView не делать бессмысленных операций.
Есть 2 модели:
User (user_id, country_id, user_name)
Country(country_id, name)
В модели User есть связь с моделью Country:
Код: Выделить всё
public function getCountry()
{
return $this->hasOne(\app\models\Country::className(), ['country_id' => 'country_id']);
}
Код: Выделить всё
public function getCountry_name()
{
return $this->Country->name;
}
Код: Выделить всё
$query = User::find()->leftJoin('country', 'user.country_id = country.country_id')->select('user.*, country.name as country_name');
Можно ли это обойти и заставить его использовать данные, которые приехали в запросе? Ведь таблица и так была подключена, данные были выбраны. Нет никакого смысла выгребать их еще раз.SELECT * FROM country WHERE country_id = xx
P.S. не нужно мне говорить, что данные отдает Getter, а там связь. Я сам это всё знаю. Вопрос - как приучить GridView не делать бессмысленных операций.