使用 Native SQL 的 Doctrine 查询总是返回空数组

Posted

技术标签:

【中文标题】使用 Native SQL 的 Doctrine 查询总是返回空数组【英文标题】:Doctrine query using Native SQL always returning empty array 【发布时间】:2018-02-16 15:08:51 【问题描述】:

我使用运行某些查询的方法创建了一个服务,我想使用学说 Native SQL,但无论我进行哪个查询,它总是返回一个空数组。有什么我遗漏的吗?

来自服务 MonthVacancySchedule 的方法:

public function getTotalVacanciesByUnits()


  $rsm = new ResultSetMapping();

  $sql = 'SELECT nome_procedimento FROM programacao';
  $query = $this->emi->createNativeQuery($sql, $rsm);
  $units = $query->getResult();

  return $units;

我使用该服务的控制器:

/**
  * @Route("/units", name="units")
  */
  public function showTotalVacanciesByUnits( MonthVacancySchedule $mvs )
  

    $units = $mvs->getTotalVacanciesByUnits();

    # Always return empty array.
    var_dump($units);

    return $units;
  

【问题讨论】:

【参考方案1】:

那是因为你向 Doctrine 请求空数组。 在rsm 对象中描述您需要的字段。例如

public function getTotalVacanciesByUnits()


  $rsm = new ResultSetMapping();

  $rsm->addScalarResult('nome_procedimento', 'nome_procedimento');

  $sql = 'SELECT nome_procedimento FROM programacao';
  $query = $this->emi->createNativeQuery($sql, $rsm);
  $units = $query->getResult();

  return $units;

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/native-sql.html#scalar-results

【讨论】:

以上是关于使用 Native SQL 的 Doctrine 查询总是返回空数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Symfony2,学说 2 中使用 @SqlResultSetMapping?

将原始 SQL 与 Doctrine 一起使用

Symfony/Doctrine 中的 SQL 注入

MS SQL CONCAT 与“+”查询的区别(使用 Doctrine 2)

使用 Symfony2 和 Doctrine 的 SQL Server 数据库连接

Symfony2/Doctrine - 与普通 SQL 相关的实体抽象