createNativeQuery - oci8 возвращает пустой массив

На очень простом объекте:

class Users {
/**
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 * @ORM\Column(type="integer")
 */
protected $userid;

/** @ORM\Column(type="string") */
protected $username;
}[...]

при попытке сделать нативный запрос

    $rsm = new \Doctrine\ORM\Query\ResultSetMapping;
    $rsm->addEntityResult('Application\Entity\Users', 'u');
    $rsm->addFieldResult('u', 'test', 'username');
    $rsm->addFieldResult('u', 'userid', 'userid');
    $q = $objectManager->createNativeQuery('SELECT u.username as test, u.userid from users u where u.userid=17',$rsm);
    $result = $result->getResult();

$result возвращает пустой массив с oracle (драйвер oci8 и pdo). С MySQL все в порядке. Базы данных между Oracle и MySQL одинаковы, одинаковые таблицы, одинаковые столбцы.

Таблица 'users' не пуста, потому что при использовании DQL она работает. Работает также при использовании addRootEntityFromClassMetadata() с собственным запросом.

Кажется, что проблема возникает только с oci8+addEntityResult().

Любая идея?

Спасибо заранее.

1 ответ

Нашел это в руководстве.

ResultSetMapping # addFieldResult ();

Первый параметр - это псевдоним результата объекта, которому будет принадлежать результат поля. Второй параметр - это имя столбца в наборе результатов SQL. Обратите внимание, что это имя чувствительно к регистру, то есть если вы используете собственный запрос к Oracle, он должен быть в верхнем регистре. Третий параметр - это имя поля результата сущности, идентифицируемого $alias, в которое должно быть установлено значение столбца.

$rsm->addFieldResult('u', 'TEST', 'username');
$rsm->addFieldResult('u', 'USERID', 'userid');
Другие вопросы по тегам