我試圖通過Symfony 3/Doctrine 2應用程序通過pdo_sqlsrv
查詢SQL Server。帶有ResultSetMapping對象的SQL本機查詢返回null
我有一個SQL查詢,我想用ResultSetMapping
對象的結果與我的實體綁定:
這是我SupplierRepository.php
class SupplierRepository extends EntityRepository
{
public function getSuppliers()
{
$rsm = new ResultSetMapping;
$rsm->addEntityResult('AppBundle\Entity\Supplier', 's');
$rsm->addFieldResult('s', 'T_TIERS', 'code');
$rsm->addFieldResult('s', 'T_LIBELLE', 'name');
$rsm->addFieldResult('s', 'T_ADRESSE1', 'address1');
$rsm->addFieldResult('s', 'T_ADRESSE2', 'address2');
$rsm->addFieldResult('s', 'T_ADRESSE3', 'address3');
$rsm->addFieldResult('s', 'T_CODEPOSTAL', 'zipcode');
$rsm->addFieldResult('s', 'T_VILLE', 'city');
$rsm->addFieldResult('s', 'T_SIRET', 'siret');
$sql = 'SELECT s.T_TIERS,
s.T_LIBELLE,
s.T_ADRESSE1,
s.T_ADRESSE2,
s.T_ADRESSE3,
s.T_CODEPOSTAL,
s.T_VILLE,
s.T_SIRET
FROM RFFOURNISSEURS s
WHERE (s.T_NATUREAUXI=?)
AND
(s.T_FERME=?)';
$query = $this->_em->createNativeQuery($sql, $rsm);
$query->setParameters(array(1 => 'FOU', 2 => '-'));
return $query->getArrayResult();
}
}
此功能我的實體Supplier.php
/**
* Supplier
*
* @ORM\Table(name="supplier")
* @ORM\Entity(repositoryClass="AppBundle\Repository\SupplierRepository")
*/
class Supplier
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var int
*
* @ORM\Column(name="code", type="string", unique=true)
*/
private $code;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;
/**
* @var string
*
* @ORM\Column(name="address1", type="string", length=255, nullable=true)
*/
private $address1;
/**
* @var string
*
* @ORM\Column(name="address2", type="string", length=255, nullable=true)
*/
private $address2;
/**
* @var string
*
* @ORM\Column(name="address3", type="string", length=255, nullable=true)
*/
private $address3;
/**
* @var int
*
* @ORM\Column(name="zipcode", type="integer", nullable=true)
*/
private $zipcode;
/**
* @var string
*
* @ORM\Column(name="city", type="string", length=255, nullable=true)
*/
private $city;
/**
* @var int
*
* @ORM\Column(name="siret", type="integer", nullable=true)
*/
private $siret;
/**
* @return int
*/
public function getCode(): int
{
return $this->code;
}
/**
* @param int $code
*/
public function setCode(int $code)
{
$this->code = $code;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @param string $name
*/
public function setName(string $name)
{
$this->name = $name;
}
/**
* @return string
*/
public function getAddress1(): string
{
return $this->address1;
}
/**
* @param string $address1
*/
public function setAddress1(string $address1)
{
$this->address1 = $address1;
}
/**
* @return string
*/
public function getAddress2(): string
{
return $this->address2;
}
/**
* @param string $address2
*/
public function setAddress2(string $address2)
{
$this->address2 = $address2;
}
/**
* @return string
*/
public function getAddress3(): string
{
return $this->address3;
}
/**
* @param string $address3
*/
public function setAddress3(string $address3)
{
$this->address3 = $address3;
}
/**
* @return int
*/
public function getZipcode(): int
{
return $this->zipcode;
}
/**
* @param int $zipcode
*/
public function setZipcode(int $zipcode)
{
$this->zipcode = $zipcode;
}
/**
* @return string
*/
public function getCity(): string
{
return $this->city;
}
/**
* @param string $city
*/
public function setCity(string $city)
{
$this->city = $city;
}
/**
* @return int
*/
public function getSiret(): int
{
return $this->siret;
}
/**
* @param int $siret
*/
public function setSiret(int $siret)
{
$this->siret = $siret;
}
錯誤/結果
查詢是很好的執行,我有1025數組中元素至極是正確的,但它們是空的,而不是供應商對象:
array(1025) {
[0]=> NULL
[1]=> NULL
[2]=> NULL
[3]=> NULL
[4]=> NULL
...
}
任何想法?它是一個類型錯誤?在調試過程中,我能夠看到the data is getting pulled from the database。
我可以問是否真的需要原生查詢?這可以使用doctrine –
您好M Khalid Junaid,謝謝你的回答,我選擇了本地查詢的選項,因爲我的查詢在這裏更簡單,真正的我有一個表包含連接,我不是很可以解決與查詢生成器,但我會以這種方式。 – YornLetard