это тоже будет работать, но при этом в запрос попадают все поля, и соответственно возрастает нагрузка и потребление памяти. Лучше все-таки до моментаобращения к мерверу правильно настроить select, чтобы в выборку попали только нужные поля.
Странной дело, пока не могу понять public function prepareQueryBeforeCount(xPDOQuery $c){
$c=parent::prepareQueryBeforeCount($c);
$c->select(['modUser.id','modUser.username']);
$c->prepare();
print $c->toSQL();
die;
} возвращает правильный запрос: SELECT modUser.id, modUser.username FROM spmx_users
AS modUser
а на выходе действительно отдает все поля Array
(
[success] => 1
[total] => 5
[results] => Array
(
[0] => Array
(
[id] => 1
[username] => admin
[password] => P3/gWbTaphPr//hV8djePt1qdcjN5CIxBVKE5tqdJyQ=
[cachepwd] =>
[class_key] => modUser
[active] => 1
[remote_key] =>
[remote_data] =>
[hash_class] => hashing.modPBKDF2
[salt] => b052eb5470a21ff53697a5bf4cb43649
[primary_group] => 1
[session_stale] => Array
(
[1] => spravochniki
[2] => web
)
[sudo] => 1
)
[1] => Array нигде в коде больше $c->select(...) не встречается вплоть до $modx->getCollection. Ничего не понимаю.