Sql server MSSQL返回相同子女的原则
我正在使用一个现有的MSSQL数据库(Dynamics),为了从中获取数据,我克隆了一个条令实体中的数据库布局,以便从数据库中获取数据。这对于一个单独的实体来说效果很好,但当我有一个伴侣关系时,就会出问题。它返回了正确数量的孩子,但他们都一样 当我将可运行查询复制粘贴到SQL Server中时,我得到了正确的结果(具有不同的子级)。因此,SQL查询很好 因此,似乎条令没有正确地解释结果。我将pdo_sqlsrv驱动程序和Doctrine2与Symfony 2.8一起使用 动态表布局:Sql server MSSQL返回相同子女的原则,sql-server,symfony,doctrine-orm,Sql Server,Symfony,Doctrine Orm,我正在使用一个现有的MSSQL数据库(Dynamics),为了从中获取数据,我克隆了一个条令实体中的数据库布局,以便从数据库中获取数据。这对于一个单独的实体来说效果很好,但当我有一个伴侣关系时,就会出问题。它返回了正确数量的孩子,但他们都一样 当我将可运行查询复制粘贴到SQL Server中时,我得到了正确的结果(具有不同的子级)。因此,SQL查询很好 因此,似乎条令没有正确地解释结果。我将pdo_sqlsrv驱动程序和Doctrine2与Symfony 2.8一起使用 动态表布局: Purch
PurchTable
recid = unique integer
purchid = unique string
PurchLine
recid = unique integer
purchid = referring to purchid from PurchTable
itemid = string
etc...
可购买实体:
/**
* @var integer
*
* @ORM\Column(name="recid", type="integer")
*/
private $recid;
/**
* @var string
*
* @ORM\Column(name="purchid", type="string", length=255)
* @ORM\Id
*/
private $orderid;
/**
* @ORM\OneToMany(targetEntity="PurchLine", mappedBy="order")
*/
protected $lines;
public function __construct()
{
$this->lines = new ArrayCollection();
}
PurchLine:
/**
* @var integer
*
* @ORM\Column(name="recid", type="integer")
* @ORM\Id
*/
private $recid;
/**
* @var integer
*
* @ORM\Column(name="linenum", type="integer")
*/
private $linenum;
/**
* @var string
*
* @ORM\Column(name="itemid", type="string", length=255)
*/
private $itemid;
/**
* @ORM\ManyToOne(targetEntity="PurchTable", inversedBy="lines")
* @ORM\JoinColumn(name="purchid", referencedColumnName="purchid")
*/
protected $order;
如您所见,我在PurchTable中将属性名更改为orderid以避免使用相同的名称,但这没有帮助
那么我做错了什么呢?:)
我无法在短时间内更改驱动程序,因此我想知道这是否是驱动程序问题(更改更改驱动程序的优先级)。读完这篇文章:
使用pdo_sqlsrv pdo的Microsoft SQL Server驱动程序注意,此驱动程序在我们的测试中导致了问题。如果可能,首选sqlsrv驱动程序
我想知道pdo_sqlsrv驱动程序是否会导致这些问题
编辑
我测试了sqlsrv驱动程序(确保使用空字符串作为用户名,而不是null(对于pdo_sqlsrv)来使用Windows身份验证),我遇到了同样的问题。所以这一定是理论上或关系上的东西
编辑2
我重新创建了实体以避免任何拼写错误,但没有效果。问题在于列的定义错误。MSSQL数据库中的RecId列是bigint而不是整数 所以,改变
/**
* @var integer
*
* @ORM\Column(name="recid", type="integer")
* @ORM\Id
*/
private $recid;
到
这就是答案
/**
* @var bigint
*
* @ORM\Column(name="recid", type="bigint")
* @ORM\Id
*/
private $recid;