I'm trying to select a user from a particular group with their extended user data [modUser has been extended] using getCollectionGraph, though it doesn't seem to be working..
Looking at the modx schema, I see the modx_member_groups table is the one I want & it has a forein key for the modUser object:
<object class="modUserGroupMember" table="member_groups" extends="xPDOSimpleObject">
<field key="user_group" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="member" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="role" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="1" index="index" />
<field key="rank" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" />
<index alias="role" name="role" primary="false" unique="false" type="BTREE">
<column key="role" length="" collation="A" null="false" />
</index>
<index alias="rank" name="rank" primary="false" unique="false" type="BTREE">
<column key="rank" length="" collation="A" null="false" />
</index>
<aggregate alias="UserGroupRole" class="modUserGroupRole" local="role" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="UserGroup" class="modUserGroup" local="user_group" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="User" class="modUser" local="member" foreign="id" cardinality="one" owner="foreign" />
</object>
So I should be able to select the user like this:
$criteria = $this->modx->newQuery('ExtUser');
//$criteria->leftJoin('MemberGroups.member','ExtUser.id');
$criteria->where(array(
'UserData.market' => $marketid,
'ExtUser.active' => 1,
));
$staff = $this->modx->getCollectionGraph('ExtUser', '{"Profile":{}, "UserData":{}, "modUserGroupMember": {}}', $criteria);
However, it's not working, I get an error:
No foreign key definition for parentClass: ExtUser using relation alias: modUserGroupMember
What is wrong here? How can I get a user from a particular group?