私は2つの同じSymfony 2.8プロジェクトを持っています。これら二つのプロジェクトの唯一の違いは、1つの教義ORMバージョンv2.4.8
を実行しているし、他はv2.5.5
なぜ、null値を含むレコードをcreateNativeQueryが返しませんか?
問題
私は両方の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);
私のエンティティは次のようになります。私のStoredProcedureで
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;
}
}
私が持っているすべてが、これは次のとおりです。
CREATE PROCEDURE [dbo].[StoredProcedureName]
AS
SELECT null as newPK, 'aaa' As msg
GO
このコードは完全に私にnull値を返すバージョンv2.4.8
に完全に正常に動作します。ただし、これはv2.5.5
では機能しません。返されるのは、その内部にNULLがあり、newPK
とmsg
の値ではない配列です。私がnullを削除し、空の文字列またはそれ以外のもので置き換えると、それは動作します。しかし、いくつかの神はあまり理由がないので、それはNULL
の値が気に入らない。私が望むのは、nullが返されるかどうかをチェックすることですが、私はdoctrineが適切な値を返さないとチェックすることができません。
私が気づいていないこれらのバージョン間で変更されたことはありますか?ネイティブクエリからNULL
の値を読み取るためには、何をする必要がありますか?