[D9] Наследовать/копировать параметры из ::entityQuery в ::entityQueryAggregate

Главные вкладки

Аватар пользователя OldWarrior OldWarrior 4 октября 2023 в 16:17

Добрый день.

Есть entityQuery-запрос со множеством параметров и условий, которые формируются из формы. По сути - запрос заказов-сущностей одного типа.

Задача: дополнительно посчитать сумму заказов в текущей выборке (по одному полю сущности). Метод ::entityQueryAggregate здесь в самый раз, но как скопировать все 100500 параметров (conditions и пр.) из базового запроса, чтобы не дублировать их повторно?

То есть, все возможные решения задачи мне видятся как-то так:

1. Всё же дублировать параметры базового ::entityQuery. Неудобно и негибко, поскольку параметры периодически добавляются при расширении функционала.

2. Получить список ID сущностей из базового ::entityQuery в виде фильтрующего массива, далее в ::entityQueryAggregate добавить condition('nid', $filtering_array, 'IN'). Недостаток: манипуляция большим промежуточным массивом, где будут десятки тысяч (реально так) элементов.

3. Наконец, какой-то неизвестный мне простой способ/метод, позволяющий извлечь параметры и условия из ::entityQuery и передать их в ::entityQueryAggregate. О чём, собственно, и вопрос темы.

Лучший ответ

Аватар пользователя Andruxa Andruxa 4 октября 2023 в 18:33
1

Вынести добавление 100500 параметров в отдельный метод, куда передаются запрос и параметры/form_state, и вызывать его поочередно для первого и второго запроса.

Комментарии

Аватар пользователя Andruxa Andruxa 4 октября 2023 в 18:33
1

Вынести добавление 100500 параметров в отдельный метод, куда передаются запрос и параметры/form_state, и вызывать его поочередно для первого и второго запроса.

Аватар пользователя OldWarrior OldWarrior 4 октября 2023 в 19:42

Кстати, да, как вариант - вполне. Спасибо за подсказку.

Однако, как-то не верится, что в API нет методов для экспорта/импорта условий запроса. С другой стороны - искал уже, ничего не нашёл.

Аватар пользователя OldWarrior OldWarrior 4 октября 2023 в 20:28

Ну что же, видимо, на этом и остановлюсь. Помечу, что топик решён.

Однако, если кто-то что-то знает, чего не знаем мы с Андрюхой - нижайшая просьба написать!