Php 尝试使用SQL SERVER运行时,条令添加了奇怪的别名[0]

Php 尝试使用SQL SERVER运行时,条令添加了奇怪的别名[0],php,sql-server,symfony,doctrine-orm,Php,Sql Server,Symfony,Doctrine Orm,我正在尝试使用SQL Server在Symfony上实现APYDataGridBundle。Symfony引发以下异常: SQLSTATE[HY000]:常规错误:105常规SQL Server错误:检查来自SQL Server的消息[105](严重性15)[从[TSOFT\u LEARN].[dbo].[tblProductDemo][0]中选择前50名[0.PI\u PK作为PI\u PK0],[0.ProductName作为ProductName1],[0.ProductDetails作为

我正在尝试使用SQL Server在Symfony上实现APYDataGridBundle。Symfony引发以下异常:

SQLSTATE[HY000]:常规错误:105常规SQL Server错误:检查来自SQL Server的消息[105](严重性15)[从[TSOFT\u LEARN].[dbo].[tblProductDemo][0]中选择前50名[0.PI\u PK作为PI\u PK0],[0.ProductName作为ProductName1],[0.ProductDetails作为ProductDetails2]

我试过:

$repo = $em->getRepository("ProductOrderLookupBundle:Product");
$product = $repo->findAll();
一切正常,但它打破了超过100万条记录。有人建议我像这样使用APYDatagridBundle。我以前尝试过ThracedataGridBundle,但它给了我同样的问题。 如果我删除了“[0”,那么在SQL Server上运行查询时一切都正常


有人能告诉我问题出在哪里吗?

原则总是在生成的查询中为表创建别名。我总是有相同类型的查询,我不知道是否可以禁用它,但最好不是因为我不知道它对连接的反应如何,您可以做的是在存储库中添加一个函数:

public function getAllProducts(){
    $qb = $this->_em->createQueryBuilder()
    ->select('partial p.{ /*add all fields needed separated by coma optimized for big queries get only whats needed */ }')
    ->from('Product', 'p');
    $results = $qb->getQuery()->getResult();
    return $results;

}

**解决:*问题在于如何在条令实体中定义表名。我给出了名称

[TSOFT_LEARN].[dbo].[tblOrders]
应该是这样

TSOFT_LEARN.dbo.tblOrders

正因为如此,我的别名变成了[0_u],而不是t0_u。我想它的原则是通过表名的第一个字符来创建别名的。由于表名以“[”开头,别名被转换为[0.

您好,谢谢您的回答,但问题出在SQL Server上。我在回答中对此进行了解释。Doctrine将使用您输入的任何表名的第一个字符创建别名。