0

我正在尝试扩展 modx modresource 对象,但不断收到错误,我似乎无法弄清楚原因。它与架构有关(我认为),但一切看起来都是正确的。

架构:

<?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');

我得到的错误是:

无法 getOne:找不到别名 ResourceData 的外键定义。parentClass 没有外键定义:modDocument 使用关系别名:ResourceData

该表存在且有数据,该包在 modx 扩展包中注册。我已经多次查看架构并且看起来正确。

是什么导致了这些错误?

4

2 回答 2

0

您正在加载的资源是否将其class_key字段设置为extResource?这是它加载正确的资源对象类所必需的。

于 2017-11-28T13:22:56.263 回答
0

您必须在 $modx->getObject 中使用正确的对象类。否则你会得到一个 modResource 对象,它不知道扩展对象的数据和关系。

$resource = $modx->getObject('extResource', 11112);
于 2017-09-20T21:48:00.680 回答