это тоже будет работать, но при этом в запрос попадают все поля, и соответственно возрастает нагрузка и потребление памяти. Лучше все-таки до моментаобращения к мерверу правильно настроить 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. Ничего не понимаю.