-
MODX Staff
- 730 Posts
Let’s say I have three objects, Listing, Category and ListingCategory
1. Listing
<object class="Listing" table="listing" extends="xPDOSimpleObject">
<field key="contact_name" dbtype="varchar" precision="64" phptype="string" null="false" />
...
<composite alias="ListingCategory" class="ListingCategory" key="listing_id" local="id"
foreign="listing_id" cardinality="many" owner="local" />
</object>
2. ListingCategory
<object class="ListingCategory" table="listing_category" extends="xPDOObject">
<field key="listing_id" dbtype="mediumint" precision="10" attributes="unsigned" phptype="integer" null="false" index="pk" />
<field key="category_id" dbtype="mediumint" precision="10" attributes="unsigned" phptype="integer" null="false" index="pk" />
<aggregate alias="Listing" class="Listing" key="id" local="listing_id" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="Category" class="Category" key="id" local="category_id" foreign="id" cardinality="many" owner="foreign" />
</object>
The above relationship seems to work so far for what I’m doing, but it might only be because I don’t have enough data in the tables yet. I’m wondering about the "key" and "foreign" attributes of Listing’s <composite ..> node. How can I define the compound key properly there? I tried comma-separating the keys.. no good.
Thanks
I’m currently attempting the same thing but I’m not having any luck. Can anyone shed some light on how compound aggregate / composite keys can be specified in the schema? Thanks
-
MODX Staff
- 10,725 Posts
xPDO does not currently handle compound keys automatically, but you can override the xPDOObject functions in your class to make it work, as I did with modResource when accessing modTemplateVar in the Revolution code (as one example).