Как подружить pdoPage с выборкой дублей тикетов?
[Решено] Мне необходимо вывести Тикеты, у которых есть чекбокс в ТВполе1, ТВполе2, ТВполе3. При том, что Тикет может иметь несколько включенных полей и в выборку должно попадать соответствующее количество дублей этого Тикета.
Простое условие в $where[0] = "(paneloff1 = 'Включить') OR (paneloff2 = 'Включить')OR (paneloff3 = 'Включить')"; — выбирает только «уникальные» значения.
Я добавил в снипет getTickets трехтактный цикл в секцию (// Fields to select).
Тогда getTickets выводит Тикеты с дублями, как требуется. Если обернуть getTickets в пагинацию, пагинация «ломается» и не работает. Похоже в pdoPage передаются только данные последнего запросы выборки = $pdoFetch->run();, а предыдущие не учитываются. Не могу понять откуда pdoPage из getTickets выбирает переменные total, totalVar и куда в getTickets отдает limit, offset.
Подскажите, пожалуйста, что тут можно сделать?
Простое условие в $where[0] = "(paneloff1 = 'Включить') OR (paneloff2 = 'Включить')OR (paneloff3 = 'Включить')"; — выбирает только «уникальные» значения.
Я добавил в снипет getTickets трехтактный цикл в секцию (// Fields to select).
Тогда getTickets выводит Тикеты с дублями, как требуется. Если обернуть getTickets в пагинацию, пагинация «ломается» и не работает. Похоже в pdoPage передаются только данные последнего запросы выборки = $pdoFetch->run();, а предыдущие не учитываются. Не могу понять откуда pdoPage из getTickets выбирает переменные total, totalVar и куда в getTickets отдает limit, offset.
Подскажите, пожалуйста, что тут можно сделать?
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
А я тем временем закинул в getTickets такую конструкцию
Чтобы скормить pdoPage количество тикетов для вывода. В пагинации теперь рисует две страницы- это правильно. А вот лимит в 8 игнорирует и выводит 10 тикетов, при переходе на вторую страницу показывает снова первую (считает такой переход ошибкой).
Что еще поворошить? Подсказываем, не стесняемся, рассмотрю даже самые невероятные идеи.
Нужно производить выборку по объектам modTemplateVarResource, к каждому из которых «приджойнить» соответствующий ресурс (тикет), тогда у вас и будут соответствующие «дубли».
А вот чтобы реализовать это на практике, нужно составить правильный запрос, для чего нужно создать тестовый сервер, создать эти ТВ-шки, несколько тикетов и тестировать. Это, конечно, долго и никто бесплатно делать этого не собирается.
У меня большое желание сделать что-то самостоятельно, это приносит удовлетворение.
Благодарю за пинок в нужном направлении :), а то я стал затухать, мне как раз не хватало идей, вариантов. Попробую поработать с объектами modTemplateVarResourc
Но вопрос все равно остался открытым. pdoPage никак не оборачивает. В обычном режиме getTickets сам не заполняет плейсходер, а «total» устанавливается в placeholder для пагинации в pdoFetch когда запускается метод run. Так как я использую pdoFetch::getCollection и затем pdoFetch::getObject, то этот плайсходер не заполняется и пагинация тупит.
Особая благодарность Илье Уткину за поддержку!
2. pdoPage в getTickets отдает limit, offset через параметры $scriptProperties.