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);