Дублирование результатов запроса после leftJoin
Уважаемое сообщество, здравствуйте!
В ходе работы над сниппетом, возвращающим список всех заказов пользователя, возникла проблема:
в результирующем массиве информация о заказе продублирована столько раз, сколько товаров включено в заказ.
Пожалуйста, подскажите, каким образом можно вернуть результат присоединения таблицы товаров к заказу в рамках одного элемента массива?
Ниже код моегокостыля сниппета (код, относящийся к оформлению результатов выборки вырезан, т.к. к вопросу не относится):
Спасибо!
В ходе работы над сниппетом, возвращающим список всех заказов пользователя, возникла проблема:
в результирующем массиве информация о заказе продублирована столько раз, сколько товаров включено в заказ.
Пожалуйста, подскажите, каким образом можно вернуть результат присоединения таблицы товаров к заказу в рамках одного элемента массива?
Ниже код моего
<?php
//
if(!isset($user) || ($user === 0)){
return '<p>Ошибка! Идентификатор пользователя не определён.</p>';
}
//Задаём значения чанков оформления по-умолчанию
if(!isset($tpl)){ $tpl = 'tpl.profile.orders_list.row'; }
if(!isset($tplWrapper) || ($tplWrapper === '')){ $tplWrapper = 'tpl.profile.orders_list.wrapper'; }
if(!isset($idx)){ $idx = 1; }
$q = $modx->newQuery('msOrder');
$q->select(
array
(
'msOrder.id',
'msOrder.num',
'msOrder.createdon',
'msOrder.cost',
'msOrder.status',
'op.product_id',
'op.name'
)
);
$q->where(array('msOrder.user_id' => $user));
$q->sortby('msOrder.id','DESC');
$q->leftJoin('msOrderProduct','op', 'msOrder.id = op.order_id');
$query = $q->prepare();
$query->execute();
$orders = $query->fetchAll(PDO::FETCH_ASSOC);
$res = print_r($orders,1);
echo '<div class="ord-lst-wrap"><pre>';
echo $res;
echo '</pre></div>';
Ниже приведен результат работы сниппета, первые два пункта демонстрируют проблему (в заказе два товара):Array
(
[0] => Array
(
[id] => 9
[num] => 1511/6
[createdon] => 2015-11-17 09:43:21
[cost] => 17849.00
[status] => 1
[product_id] => 5553
[name] => Primavera (гостиная) Комод 1 /Глазово
)
[1] => Array
(
[id] => 9
[num] => 1511/6
[createdon] => 2015-11-17 09:43:21
[cost] => 17849.00
[status] => 1
[product_id] => 5205
[name] => Berlin 1 (гостиная) Шкаф МНЦ КОРПУС (01, Ясень шимо свентлый) /Глазово
)
[2] => Array
(
[id] => 8
[num] => 1511/5
[createdon] => 2015-11-15 09:00:35
[cost] => 7599.00
[status] => 1
[product_id] => 2034
[name] => (закрыт) Стенка Франк МА-190 Дуб кремона/Дуб феррара /Столлайн
)
[3] => Array
(
[id] => 7
[num] => 1511/4
[createdon] => 2015-11-10 03:09:59
[cost] => 26323.00
[status] => 1
[product_id] => 5788
[name] => Акцент орхидея Шкаф-купе 2300х1800х600/ясень шимо темный/шампань/Бумеранг
)
P.S.: самое простое решение — вовсе избежать leftJoin'а таблицы товаров заказа к запросу, а в оформленном выводе возвращать ссылку с id-заказа, которая вела бы на страничку со сниппетом, принимающим на вход id заказа и возвращающего оформленный список товаров этого заказа. Но, может быть, это возможно сделать в одном сниппете (без обработки результирующего массива на php — объединения элементов с одинаковым id и формированием массива товаров)? Куда копать?Спасибо!
Не получается заставить AjaxSnippet работать
Добрый вечер,
Не получается заставить AjaxSnippet работать. После нажатии — бесконечная загрузка. Подскажите куда копать? Что не так сделал?
Код в шаблоне
Не получается заставить AjaxSnippet работать. После нажатии — бесконечная загрузка. Подскажите куда копать? Что не так сделал?
Код в шаблоне
[[!AjaxSnippet?
&snippet=`SnippetTest`
&parents=`4`
&tpl=`@INLINE <p>[[+id]] - [[+pagetitle]]</p>`
&as_mode=`onclick`
&as_trigger=`Нажми меня!`
]]
Сниппет SnippetTest<?php
echo '<h3>Запись</h3>';
Вопрос по pdoResources
Добрый вечер!
Вывожу следующим кодом на главной странице сайта элементы каталога, включающего дополнительные TV (Dom_image,Gabbarite,Number_etag,Plogad,Price) [№1 на изображении ниже]:
Что я делаю неправильно? Сколько раз на странице можно вызывать pdoResources? Есть ли какие-то ограничения?
Вывожу следующим кодом на главной странице сайта элементы каталога, включающего дополнительные TV (Dom_image,Gabbarite,Number_etag,Plogad,Price) [№1 на изображении ниже]:
[!pdoResources?
&tpl=`Project_template`
&includeTVs=`Dom_image,Gabbarite,Number_etag,Plogad,Price`
&limit=`6`
&sortby=`{"publishedon":"ASC"}`
]]
Аналогичным кодом вывожу эти же плитки в разделе НОВОСТИ на сайте. Хочу еще по переходу с кнопки ПОДРОБНЕЕ попадать на подробную страницу с описанием, на которой те же TV должны подхватываться из предыдущего вывода. Для этого вызываю другой чанк:[[!pdoResources?
&tpl=`Project_right_template`
&parents=`0`
&depth=`10`
&limit=`1`
&includeTVs=`Gabbarite,Number_etag,Plagad,Price`
]]
Получаются разные данные первоначального вывода и вывода на подробной странице [№2 на изображении ниже] — разные изображения и разная цена.Что я делаю неправильно? Сколько раз на странице можно вызывать pdoResources? Есть ли какие-то ограничения?
CMPGenerator Pro ускоряем разработку своих пакетов
Hi, сделал новое дополнение CMPGenerator Pro на основе UiCMPGenerator.
Что может CMPGenerator Pro:
Что может CMPGenerator Pro:
pdoMenu | Запрет отображения подраздела ресурса
Всем привет.
Подскажите, как можно запретить отображение подраздела (*меню 2-го уровня) у ресурса Tickets.
Т.е. на всех пунктах в меню кроме Tickets, при нажатии выпадает подменю, а при клике на раздел Tickets открывается страница с лентой созданных тикетов.
Подскажите, как можно запретить отображение подраздела (*меню 2-го уровня) у ресурса Tickets.
Т.е. на всех пунктах в меню кроме Tickets, при нажатии выпадает подменю, а при клике на раздел Tickets открывается страница с лентой созданных тикетов.
Вывести MIGX позицию с конкретным idx
Собственно сдаюсь.
Всегда думал что вот этого достаточно чтобы вывести MIGX позицию с idx 5
Или нет?
Помогите разобраться.
Всегда думал что вот этого достаточно чтобы вывести MIGX позицию с idx 5
[[getImageList?
&tvname=`managers`
&tpl=`managers.email`
&docid=`464`
&toPlaceholder=`MIGX`
&where=`{"idx:=":"5"}`
]]
Оказалось фигушки. Не выводит ничего. При этом если сделать {«idx:!=»:«5»} то выводятся все позицию сразу, что наводит меня на мысль об ошибке в синтаксисе. Или нет?
Помогите разобраться.
Непонятки с датой, обрезкой фото
Добрый день, уважаемое сообщество.
Переношу сайт с evo на revo (сайт простой и почти все сделал) и столкнулся с двумя проблемками:
Переношу сайт с evo на revo (сайт простой и почти все сделал) и столкнулся с двумя проблемками:
XPDO where по дате
Привет, помогите пожалуйста разобраться с датой через XPDO. Я уверен, что неправильно с ней работаю, направьте на путь истинный.
Берётся текущий день, затем через цикл выводятся 5 материалов за этот день, в конце цикла прибавляется к текущей дате +1 день, затем цикл опять выводит материалы за данный день и т.д.
Вопрос следующий, как можно исключить из выборки дни, в которых не было материалов(т.е. если у текущего дня нет материалов, вместо него берётся след. день, где есть материалы).
Берётся текущий день, затем через цикл выводятся 5 материалов за этот день, в конце цикла прибавляется к текущей дате +1 день, затем цикл опять выводит материалы за данный день и т.д.
Вопрос следующий, как можно исключить из выборки дни, в которых не было материалов(т.е. если у текущего дня нет материалов, вместо него берётся след. день, где есть материалы).
Tickets и категории
Здравствуйте.
Спасибо за такое дополнение.
Но как давать возможность пользователю выбрать категорию при добавлении тикета?
Например, один тикет пойдет в контейнер «Заявки на установку», а другой пойдет в раздел «Вопросы по использованию».
Всего 42 раздела.
Как тут быть? Возможно другой компонент надо использовать?
Спасибо.
Спасибо за такое дополнение.
Но как давать возможность пользователю выбрать категорию при добавлении тикета?
Например, один тикет пойдет в контейнер «Заявки на установку», а другой пойдет в раздел «Вопросы по использованию».
Всего 42 раздела.
Как тут быть? Возможно другой компонент надо использовать?
Спасибо.
[FormIt] Обработка чанка - тела письма, в хуке
Кто может объяснить, почему неправильно работает этот вызов в хуке email, и в снипете FormItAutoResponder тоже самое — возвращает пустоту?
Из-за этого бага я тщательно пересохранял все названия почтовых чанков, а то вдруг там закрался кириллический символ (><), проверил все пути и перевтыкал все настройки почты, вобщем вынесло моск не на шутку.
В итоге Я заметил его нативным и теперь все отлично(мне так кажется).
Из-за этого бага я тщательно пересохранял все названия почтовых чанков, а то вдруг там закрался кириллический символ (><), проверил все пути и перевтыкал все настройки почты, вобщем вынесло моск не на шутку.
В итоге Я заметил его нативным и теперь все отлично(мне так кажется).
//$message = $this->formit->getChunk($tpl,$fields); // BAD String
$message = $this->modx->getChunk($tpl,$fields);