Есть такая задача: сводная таблица состоит из данных нескольких других таблиц. Они собираются, форматируются (например было в оригинале $lastname, $firstname, $middlename
- собралось в один $fullname
и т.п.) и выводятся на страницу в виде таблицы. Столбцов и строк довольно много.
В предыдущем проекте когда я делал такую же задачу я использовал Dynagrid для вывода и отдельную таблицу в которую я собирал все эти данные и из нее уже выводил их. Причем в отдельной таблице хранилась дата последнего обновления таблицы и через какое-то фиксированное время происходила очистка и новое заполнение этой таблицы (ну или если тыкнули спец. кнопочку "обновить таблицу").
Но мне это решение не особо понравилось. Во первых необходимость создавать для этого отдельную таблицу, структура которой кстати иногда меняется и в которой уж очень много столбцов (больше 10). Во вторых необходимость хранить отдельным полем время обновления и вручную проверять его. К тому же данные могли поменяться, а время обновлять таблицу еще не пришло...
Подскажите как такое кэширование будет реализовать правильнее? Данных действительно довольно много (например в районе 5к строк), но выводятся они само собой через пагинацию. Чем мне понравился именно этот грид - очень гибкий в настройке (например количество выводимых строк и отображаемые столбцы). Причем настраивать его может уже юзер под себя. Но можно и другой какой-нибудь использовать - не принципиально. Главное чтобы его было несложно встроить. Например рассматривал как альтернативу JQuery DataTables.
Кажется никто не может понять что я имею ввиду, поэтому прикладываю полный код из старого проекта: SummaryTable.php, SummaryTableManager.php, index.php
@Ninazu нет у меня отдельного запроса на каждую строчку. Скорее уж отдельный запрос (а то и не один) на каждый столбец.
Я бы не был так категоричен. Вот пример без with
$articles = Article::find()
//->with(['user']) //Раскомментировать вконце
->limit(2)
->all();
//Cмотрим вытащились релейшены для первой записи?
print_r(array_keys($articles[0]->getRelatedRecords()));
//Обращаемся к релейшену
$articles[0]->user->user_id;
//Перепроверим релейшены, после первого обращения
print_r(array_keys($articles[0]->getRelatedRecords()));
//Ну и если вы думаете что оно подтянуло релейшены для всех строк, то это можно проверить так
print_r(array_keys($articles[1]->getRelatedRecords()));
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть задача формировки ИнвойсаКогда человек из корзины может сформировать счет по клику
подскажите как найти в дереве начиная с parent_id=2 все дочерние строки, у которых parent_id нет одинаковых?
Задача - переназначить ключи в массиве и отсортировать массив по вновь назначенным ключамЯ новичок в php поэтому для переназначения выбрал,...
Есть indexphp расположенный по такому пути: /home/user/web/example