【发布时间】:2017-02-02 20:53:21
【问题描述】:
我有两个相同的 Symfony 2.8 项目。这两个项目的唯一区别是一个运行 Doctrine ORM 版本v2.4.8,另一个运行v2.5.5
问题
我在两个 Symfony 项目中都有以下这段代码。
$rsm = new ResultSetMapping();
$rsm->addEntityResult('EntityBundle:New', 'u');
$rsm->addFieldResult('u', 'newPK', 'newPK');
$rsm->addFieldResult('u', 'msg', 'msg');
$query = $em->createNativeQuery('StoredProcedureName @a= :a, @b= :b, @c= :c', $rsm);
$query->setParameter('a', 'a');
$query->setParameter('b', 'b');
$query->setParameter('c', 'c');
$result = $query->getArrayResult();
var_dump($result);
我的实体如下所示:
use Doctrine\ORM\Mapping as ORM;
/**
* New
*
* @ORM\Table(name="dbo.New")
* @ORM\Entity()
*/
class New
{
/**
* @var string
*
* @ORM\Column(name="newPK", type="string", length=255, unique=false)
*/
private $newPK;
/**
* @var string
*
* @ORM\Column(name="msg", type="string", length=255, unique=false)
*/
private $msg;
/**
* @return string
*/
public function getNewPK()
{
return $this->newPK;
}
/**
* @param string $newPK
*/
public function setNewPK($newPK)
{
$this->newPK = $newPK;
}
/**
* @return string
*/
public function getMsg()
{
return $this->msg;
}
/**
* @param string $msg
*/
public function setMsg($msg)
{
$this->msg = $msg;
}
}
在我的 StoredProcedure 中,我只有这个:
CREATE PROCEDURE [dbo].[StoredProcedureName]
AS
SELECT null as newPK, 'aaa' As msg
GO
此代码在 v2.4.8 版本上完美运行,完美返回 null 值。但是,这不适用于v2.5.5。它返回的只是一个包含 NULL 的数组,而不是 newPK AND msg 值。如果我删除 null 并将其替换为空字符串或其他任何内容,它就可以工作。但是出于某种天经地义的原因,它不喜欢 NULL 值。我只想检查是否返回 null,但如果没有教义返回正确的值,我似乎无法检查。
这些版本之间有什么我不知道的变化吗?我需要做什么才能从本机查询中读取 NULL 值?
【问题讨论】:
标签: php sql-server symfony orm doctrine