Заставляем SQL-запросы возвращать цифры, а не только строки

Интересный момент сегодня заметил... Сформировал Ajax-запрос, получил от сервера JSON-ответ, пытаюсь его использовать в своих целях, но возникает проблемка... Там, где должны были числовые значения быть, на самом деле сидят обычные строки. Пример:

В javascript это очень важно, так как он более типизированный язык, чем php, и от типа данных и результат при сравнении может отличаться, и переменные разные методы будут иметь.

Я сначала подумал, что это у меня процессор не правильно обрабатывает данные и переводит числовые значения в строки, но оказалось, что это сам PDO так делает (при чем именно PDO, а не xPDO).

Это легко проверить, выполнив в консоли простой запрос:

$q = $modx->newQuery("modResource");
$q->select(array(
    "id",
));
$q->limit(1);

$s = $q->prepare();
$s->execute();

var_dump($s->fetch(2));

На выходе я получаю вот такой результат:

array(1) {
  ["id"]=>
  string(1) "1"
}

То есть id содержит строку, а не число.

Решение нашлось такое:

$modx->pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Если выполнить его перед выполнением запроса, то данные приходят в нормальном виде.

array(1) {
  ["id"]=>
  int(1)
}

Если кому такое тоже понадобится, и чтобы это заработало на всем сайте, можно в плагине на OnMODXInit прописать эту строчку, а можно в каком-нибудь своем компоненте в metadata.mysql.php прописать

$this->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);