Yii2 - создайте и используйте временную таблицу mysql в GridView

Мне нужно создать и использовать временную таблицу 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;

0 ответов

Другие вопросы по тегам