Расширение ошибок схемы Modx ModResource
Я пытаюсь расширить объект modxource modx, но продолжаю получать ошибки, и я не могу понять, почему. Это связано со схемой (я думаю), но все выглядит правильно.
Схема:
<?xml version="1.0" encoding="UTF-8"?>
<model package="extresource" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" tablePrefix="modx_" version="1.0.0">
<object class="extResource" extends="modResource">
<composite alias="ResourceData" class="ResourceData" local="id" foreign="internalKey" cardinality="one" owner="local"/>
</object>
<object class="ResourceData" table="resource_data" extends="xPDOSimpleObject">
<field key="internalKey" dbtype="int" precision="11" phptype="integer" null="false" attributes="unsigned"/>
<field key="views" dbtype="int" precision="11" phptype="integer" null="true" />
<field key="starred" dbtype="int" precision="10" phptype="integer" null="false" />
<index alias="internalKey" name="internalKey" primary="false" unique="true" type="BTREE" >
<column key="internalKey" length="" collation="A" null="false" />
</index>
<aggregate alias="Resource" class="modResource" local="internalKey" foreign="id" cardinality="one" owner="foreign"/>
</object>
</model>
Я тестирую это с помощью:
$resource = $modx->getObject('modResource', 11112);
echo $resource->get('pagetitle'); //test I have the resource
$data = $resource->getOne('ResourceData');
Я получаю следующие ошибки:
Не удалось получить значение: определение внешнего ключа для псевдонима ResourceData не найдено. Нет определения внешнего ключа для parentClass: modDocument с использованием псевдонима отношения: ResourceData
Таблица существует и имеет данные, пакет зарегистрирован в пакетах расширения modx. Я был над схемой много раз, и это выглядит правильно.
Что вызывает эти ошибки?
2 ответа
Имеет ли загружаемый ресурс свой class_key
поле установлено в extResource
? Это необходимо для того, чтобы он загрузил правильный класс объекта ресурса.
Вы должны использовать правильный класс объекта в $modx->getObject. В противном случае вы получите объект modResource, который не знает данных расширенного объекта и взаимосвязи.
$resource = $modx->getObject('extResource', 11112);