php - 使用 Doctrine NativeQuery 获取单行结果

标签 php doctrine-orm

我正在尝试使用 Doctrine 从 native 查询返回一行。这是我的代码:

$rsm = new ResultSetMapping;
$rsm->addEntityResult('VNNCoreBundle:Player', 'p');
$rsm->addFieldResult('p', 'player_id', 'id');

$sql = " 
    SELECT player_id
      FROM players p
     WHERE CONCAT(p.first_name, ' ', p.last_name) = ?
";

$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
$query->setParameter(1, $name);
$players = $query->getResult();

最后一行返回玩家列表,但我只想要一个结果。我该怎么做?

最佳答案

您可以使用$query->getSingleResult(),如果找到多个结果,或者没有找到结果,它将抛出异常。 (请参阅此处相关的 phpdoc https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php#L791 )

还有一个不太出名的 $query->getOneOrNullResult() ,如果找到多个结果,它会抛出异常,如果没有找到结果,则返回 null。 (请参阅此处相关的 phpdoc https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php#L752 )

关于php - 使用 Doctrine NativeQuery 获取单行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11348604/

相关文章:

php - php中包含文件的范围丢失

symfony - 教义2 : Cannot find concurrently persisted entity with findById

doctrine-orm - 如何在学说2中创建数据库

Symfony 2 - 表单选择选项数据库

javascript - 用 POST 替换 GET

php - 当我转换时,网站可以是 mysql 和 mysqli 的一部分吗

php - 同一查询中的 SQL LIKE 和 NOT LIKE

php - 为 youtube 视频的图像添加时间戳

doctrine-orm - 以 SQL 方式获取 Doctrine DQL 结果

php - 如何使用 Doctrine QueryBuilder 或 EntityManager 通过多对多相关实体查找实体