我试图扩展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使用 relation alias:ResourceData
表存在&amp;有数据,包在modx扩展包中注册。我已多次使用架构和&amp;看起来不错。
导致这些错误的原因是什么?
答案 0 :(得分:0)
您必须在$ modx-&gt; getObject中使用正确的对象类。否则,您将获得一个modResource对象,该对象不知道扩展对象数据和关系。
$resource = $modx->getObject('extResource', 11112);