Мне нужно создать и использовать временную таблицу MySQL в GridView Yii2.
Мой GridView показывает некоторые столбцы из таблицы license
с одним дополнительным столбцом, который вычисляется во время выполнения. Я могу сделать это легко (используя преобразование свойств в модели), однако мне также нужна сортировка / фильтрация. Я решил эту проблему в прошлом, используя представления или временные таблицы.
Я перенес вычисление значения столбца в SQL (чтобы использовать его во временной таблице), но я не знаю, как сделать все это в Yii2. Причина, по которой я хочу использовать временную таблицу, а не представление, состоит в том, что вычисление значения столбца зависит от конфигурации приложения во время выполнения.
Я не нашел никакой документации или примеров, как это сделать в Yii2. Там есть кто-нибудь? Может быть, кто-то здесь сделал подобное и может опубликовать пример кода?
Спасибо
ОБНОВИТЬ: Это моя временная таблица, которую я пытаюсь использовать с GridView. Мне нужна фильтрация и сортировка по статус поле. Сейчас это представление, но поскольку некоторые параметры зависят от конфигурации среды выполнения приложения, это должна быть временная таблица.
CREATE OR REPLACE VIEW extended_license AS
SELECT
license.*,
(CASE
-- license expired
WHEN (license.valid_until_date < UTC_DATE())
THEN 'License Expired'
-- support valid until year_month(begin_date) + 1year <= year_month(today).
WHEN (license.branding_name IN ('this_is_runtime_generated_list'))
THEN CASE ( Year(license_begin_date) + 1 < Year(UTC_DATE())
OR (Year(license_begin_date) + 1 = Year(UTC_DATE()) AND Month(license_begin_date) <= Month(UTC_DATE)) )
WHEN 1 THEN 'Support Expired'
ELSE 'Valid'
END
-- support valid if major version is current year
WHEN (license.branding_name IN ('this_is_runtime_generated_list'))
THEN CASE (license.program_major_ver != YEAR(UTC_DATE()))
WHEN 1 THEN 'Support Expired'
ELSE 'Valid'
END
-- support valid
ELSE 'Valid'
END) AS status
FROM license;
Задача ещё не решена.
Других решений пока нет …