Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server MSSQL返回相同子女的原则_Sql Server_Symfony_Doctrine Orm - Fatal编程技术网

Sql server MSSQL返回相同子女的原则

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

我正在使用一个现有的MSSQL数据库(Dynamics),为了从中获取数据,我克隆了一个条令实体中的数据库布局,以便从数据库中获取数据。这对于一个单独的实体来说效果很好,但当我有一个伴侣关系时,就会出问题。它返回了正确数量的孩子,但他们都一样

当我将可运行查询复制粘贴到SQL Server中时,我得到了正确的结果(具有不同的子级)。因此,SQL查询很好

因此,似乎条令没有正确地解释结果。我将pdo_sqlsrv驱动程序和Doctrine2与Symfony 2.8一起使用

动态表布局:

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;