0

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

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

任何想法 ?

提前谢谢。

4

1 回答 1

1

在手册中找到它。

ResultSetMapping#addFieldResult();

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

$rsm->addFieldResult('u', 'TEST', 'username');
$rsm->addFieldResult('u', 'USERID', 'userid');
于 2013-02-28T09:09:50.793 回答