Дмитрий

Дмитрий

С нами с 21 марта 2020; Место в рейтинге пользователей: #894
Дмитрий
20 апреля 2025, 10:31
0
Очень любопытный вопрос! Кастомизирую, так, что бы было удобно работать с таблицей, и нужная информация, для обработки заказа выводилась в таблицу, а не нужная, как раз таки пускай будет в модальном окне.
Дмитрий
19 апреля 2025, 11:51
0
Спасибо за ответ!
Так, то не мой код, то код разработчика minishop2. Это штатный процессор getlist.class.php.
И выдержки кода, я привел именно из него =)
Вот ссылка на полный код github.com/modx-pro/miniShop2/blob/master/core/components/minishop2/processors/mgr/orders/getlist.class.php

Что же касается изначального вопроса.

Ранее, в качестве практики, я уже формировал подобную таблицу, но не со стороны панели управления сайта, а на фронтенд (я правильно употребляю термин? Т.е. на самом сайте, в открытом доступе).
Делал эту таблицу на основе готового снипета, который нашел на просторах интернета.
Там код существенно проще, для моего восприятия.
Там есть sql-запрос, понятный мне, и есть цикл, который выводит данные.

По сути вот запрос, с которым, я достаточно долго сидел, прежде чем оно заработало. Однако это, как раз тот запрос, который решает, ту проблему, о который ты пишешь (когда товаров много).
$sQuery="SELECT 
adr.id, adr.country, adr.region, adr.phone, adr.comment, ord.status, adr.text_address, ord.order_comment, ord.delivery, ord.num, ord.weight, adr.receiver, ord.cost,
(select GROUP_CONCAT(name, ' - ', count, 'шт ') as names from modx3_ms2_order_products where order_id = adr.id) as names
FROM modx3_ms2_order_addresses as adr
LEFT JOIN 
modx3_ms2_orders as ord ON adr.id=ord.id ORDER BY adr.id DESC
а дальше уже обрабатываю полученную таблицу и вывожу
$result = $modx->query($sQuery);
$res = $result->fetchAll(PDO::FETCH_ASSOC);

foreach($res as $v){
echo "$v[id]";
}
По сути, ты пишешь тоже самое, но только именно под бекенд (верно термин использую?), т.е. для панели администратора?

А самое главное, у меня есть четкое убеждение того, что мне как-то нужно придерживаться стилистики кода, которым написан процессор. Или нет? Просто нужно же не просто в базу запрос сформировать, а еще нужно этот запрос потом обработать =)
Дмитрий
17 апреля 2025, 21:35
0
Действительно! Самого главного я и не обозначил! Спасибо! Поправлю заголовок.
Речь идет именно о панели менеджера и возможности управления заказами.
В модалке без условно выводится и с этим нет сложностей, вопрос в том, что в данном контексте требуется перечень товаров выводить в общую таблицу.
Ну т.е. на равне с комментарием к заказу, датой заказа и прочими данными, требуется вывести перечень заказов.
Дмитрий
16 апреля 2025, 13:16
0
А в логах следующее:
(ERROR @ /home/c/cz42644/test-iflower/public_html/core/xpdo/xpdo.class.php: 644) Could not load class: ms2_order_products from mysql.ms2_order_products.
(ERROR @ /home/c/cz42644/test-iflower/public_html/core/xpdo/xpdo.class.php: 644) Could not load class: msorderProducts from mysql.msorderproducts.
[2025-04-13 15:04:21] (ERROR @ /home/c/cz42644/test-iflower/public_html/core/xpdo/xpdo.class.php: 1827) No foreign key definition for parentClass: msOrder using relation alias: Product

Каждая ошибка повторяется по нескольку раз, но это я так понимаю, идет несколько обращений к бд и каждое порождает одну и тужу ошибку.
Дмитрий
16 апреля 2025, 13:06
0
Большое спасибо за ответ, но к сожалению я мало чего понял из него… Я даже не до конца понимаю, что такое фронт… Это фронт-енд? Т.е. панель администрирования? Или отработка скриптов?
Как я это себе вижу=) А ты меня поправь.
Те данные, что присутствуют в таблице с заказами, берутся из таблицы _ms2_orders, у меня уже получилось расширить эту таблицу данными из таблицы _ms2_order_addresses, это выглядело сложно, но я справился (скажу даже, что я не менял исходники, а сделал красиво, именно расширив своими файлами), т.к. нужный запрос уже присутствовал в процессоре (фильтрация заказов частично делается и по этой таблице). Я так понимаю, что за это отвечает эта часть кода $c->leftJoin('msOrderAddress', 'Address'); Т.е. дальше, я просто немного изменил SQL-запрос добавив выборку нужных полей.
Сейчас, мне нужно в запрос подключить еще одну таблицу, а именно _ms2_order_products, причем еще нужно сделать сортировку по id заказа, т.к. товаров в одном заказе может быть много.
Не получится ли сделать подобным образом?
или нужно идти по пути, который ты предложил?

Что такое msOrderAddress в данном случае $c->leftJoin('msOrderAddress', 'Address');? А самое главное откуда оно берется, это же не таблица в БД, а объект, класс или что-то еще? Где можно найти рождение msOrderAddress этого? Выше написанная строчка кода делает алиас в запросе, и при дальнейшем обращении я уже могу обращаться к таблице _ms2_order_addresses как Address.
Дмитрий
13 апреля 2025, 20:14
0
Спасибо, опять сумел разобраться с вашей подачи!=)
Дмитрий
10 апреля 2025, 17:19
0
Ух, спасибо за ваш перст указующий, уже второй раз помогаете! Пойду изучать мат часть!
Дмитрий
20 марта 2025, 00:16
0
Разобрался, все сделал! Спасибо за помощь!
Дмитрий
19 марта 2025, 23:09
0
Разобрался, все сделал! Спасибо за помощь!
Дмитрий
18 марта 2025, 15:16
0
да, да, именно так я и планировал поступить=) Спасибо!
Дмитрий
18 марта 2025, 13:41
0
Спасибо за наводку! Покурю… кстати, а где сами процессоры minishopa живут? Что называется, что бы за образец взять скрипты. Забегая вперед, я знаю, что изменять исходники — дурной тон=)