This question has been answered by alipang. See the first response.
$c = $modx->newQuery('userData'); $c->where(array('User.active' => '1')); $users = $modx->getCollectionGraph('userData', '{"Profile":{},"User":{}}', $c);
Can pdoResources and pdoUsers handle extended data?
If (and it's a big if) you've properly created the tables as related objects of each other, you can use getCollectionGraph() to get them all in a single query. You can also use $query->leftJoin() with getCollection().That was what I was missing. Lesson learned: getCollectionGraph() is handy through it's use of model definitions, but with some extra typing getCollection() can do the job too.
[[!pdoPage? &element=`pdoUsers` &leftJoin=`[{"class":"userData", "alias": "userData", "on":"userData.userdata_id = modUser.id"}]` &select=`{"userData": "firstName, lastName"}` &loadModels=`{'extendeduser': MODX_CORE_PATH.'components/classextender/model/'}` &toPlaceholder=`userlist` &tpl=`userItem` &tplWrapper=`usersWrapper` &setTotal=`1` &totalVar=`total` &showInactive=`0` &showBlocked=`0` &showLog=`1` ]] [[!+userlist:notempty=`[[!+userlist]][[!+page.nav]]`]]
You've seen this, right?
https://docs.modx.pro/en/components/pdotools/classes/pdofetch
$total = (int)$modx->getPlaceholder($totalVar);