Doctrine orm createNativeQuery-oci8返回空数组

Doctrine orm createNativeQuery-oci8返回空数组,doctrine-orm,zend-framework-modules,Doctrine Orm,Zend Framework Modules,在一个非常简单的实体上: 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\Resu

在一个非常简单的实体上:

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()才会出现此问题

有什么想法吗


提前谢谢。

在手册中找到了

结果映射#addFieldResult()

第一个参数是字段结果将属于的实体结果的别名。第二个参数是SQL结果集中列的名称。请注意,此名称区分大小写,即如果对Oracle使用本机查询,则必须全部为大写。第三个参数是由$alias标识的实体结果上的字段名称,列的值应设置为该字段的值

$rsm->addFieldResult('u', 'TEST', 'username');
$rsm->addFieldResult('u', 'USERID', 'userid');