I’m trying to link three tables together with getObjectGraph: WebUsers, WebAttributes and Roles (ignore the fact that Roles is not useed for WebUsers - it’s in the database so I’m taking advantage of it.)
This works:
$WebUsers = $this->xpdo->getObjectGraph('WebUsers','{"Profile":{}}',$userId);
echo $WebUsers->Profile->getOne('Role')->toArray();
But I’d like to get all related objects in one go. Eventually I will need 4 or more related tables at a time. This does not work:
$WebUsers = $this->xpdo->getObjectGraph('WebUsers','{"Profile":{"Role":{}}}',$userId);
echo $WebUsers->Role->toArray();
I understand that Role is in fact related to WebUserAttribute (Profile) and
not WebUser. Role is WebUsers’ ... step-brother?
Here’s the XML of the relationships:
<object class="WebUsers" table="web_users" extends="xPDOSimpleObject">
<composite alias="Profile" class="WebUserAttributes" local="id" foreign="internalKey" cardinality="one" owner="local" />
<composite alias="CoProfile" class="CoUserProfiles" local="id" foreign="webuser_id" cardinality="one" owner="local" />
</object>
<object class="WebUserAttributes" table="web_user_attributes" extends="xPDOSimpleObject">
<composite alias="WebUser" class="WebUsers" local="internalKey" foreign="id" cardinality="one" owner="foreign" />
<composite alias="Role" class="UserRoles" local="role" foreign="id" cardinality="one" owner="local" />
</object>
<object class="UserRoles" table="user_roles" extends="xPDOSimpleObject">
<composite alias="Profile" class="WebUserAttributes" local="id" foreign="role" cardinality="one" owner="foreign" />
</object>
My question: is it possible to get objects
not directly related using getObjectGraph? That is, a relative of a relative?