Добрый день! Есть следующая модель записей
- session
- SessionAnswer
- sessionQuestionAnswer
- sessionQuestionAnswer
- sessionQuestionAnswer
- SessionAnswer
- sessionQuestionAnswer
- sessionQuestionAnswer
- sessionQuestionAnswer
- И следующий код $session = $modx->getObjectGraph('modtestSession','{"SessionAnswer":{"SessionQuestionAnswer":""}}',84); $sessionAnswers = $session->getMany('SessionAnswer'); //в моем случае объекту $session соответствует ровно 10 записей SessionAnswer, выводится все правильно echo "sessionAnswers: ".count($sessionAnswers); foreach($sessionAnswers as $sessionAnswer){ //А вот тут getMany возвращает только по одному объекту, хотя в среднем может быть от 1 до 6 объектов SessionQuestionAnswer на каждый SessionAnswer $sessionQuestionAnswers = $sessionAnswer->getMany('SessionQuestionAnswer'); echo "sessionQuestionAnswers: ".count($sessionQuestionAnswers); } Модель такая (поля выбросил, чтоб не перегружать): <object class="modtestSession" table="modsession" extends="xPDOSimpleObject"><param name="wmode" value="opaque"></param> <composite alias="SessionAnswer" class="modtestSessionAnswer" local="id" foreign="session_id" cardinality="many" owner="local" /> <aggregate alias="Topic" class="modtestTopic" local="topic_id" foreign="id" cardinality="one" owner="foreign" /> </object> <object class="modtestSessionAnswer" table="modsessionanswer" extends="xPDOSimpleObject"><param name="wmode" value="opaque"></param> <field key="session_id" dbtype="int" phptype="integer" null="false" default=""/> <field key="question_id" dbtype="int" phptype="integer" null="false" default=""/> <aggregate alias="Session" class="modtestSession" local="session_id" foreign="id" cardinality="one" owner="foreign" /> <aggregate alias="Question" class="modtestQuestion" local="question_id" foreign="id" cardinality="one" owner="foreign" /> <composite alias="SessionQuestionAnswer" class="modtestSessionAnswerQuestion" local="id" foreign="session_question_id" cardinality="many" owner="local" /> </object> <object class="modtestSessionAnswerQuestion" table="modsessionanswer_question" extends="xPDOSimpleObject"><param name="wmode" value="opaque"></param> <field key="session_question_id" dbtype="int" phptype="integer" null="false" default=""/> <aggregate alias="SessionAnswer" class="modtestSessionAnswer" local="session_question_id" foreign="id" cardinality="one" owner="foreign" /> </object> На втором уровне вложенности возвращает по 1 объекту. Это нормальное поведение getObjectGraph или я что-то делаю не так? На первом уровне возвращается правильное количество, но вот на втором уже по одному объекту. Если заменить getObjectGraph на getObject, то всё нормально.
с нетерпением жду
Это я потом статью напишу подробную, там сразу не разобрать будет всех прелестей))
Да пока только поставил. Не копал пока, надо срочно сайт добить.
Видел новый процессор и сервис. Для чего это — пока не пойму :)
Не за что.
А ты ничего интересного не нашел в новой версии modxSite? ;)
Найти где вызывается этот метод и заменить на $modx->runProcessor() или $modx->loadClass() в зависимости от использования.
Это очень старая экспериментальная функция, не оправдавшая себя. Теперь ее надо убрать, но сразу не мог, так как привело бы вообще к критической ошибке. Прописал лог ошибки, чтобы можно было почистить свои проекты.
Если у вас ShopModxBox, то там для этого уже УРЛы заведены joxi.ru/nAyz3VMFXVL1Nr
office/payment/robokassa/result.html
office/payment/robokassa/success.html
office/payment/robokassa/failure.html
Сорри, мы с Эво не работаем и вряд ли с ним тут кто-то поможет.
Сегодня заметил ошибки:
(ERROR @ /conn/index.php) Method modxsite::loadProcessor deprecated and will be removed in future (ERROR @ /conn/index.php) Method modxsite::loadClass deprecated and will be removed in future (ERROR @ /conn/index.php) Method modxsite::_loadClass deprecated and will be removed in future
Плодятся при каждом обращении к сайту. Как можно их убрать?
php 5.59 на Ubuntu 14 на VirtualBox, MODX 2.4.3