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