Doctrine orm Symfony 3原则如何构建没有列索引后缀的查询

Doctrine orm Symfony 3原则如何构建没有列索引后缀的查询,doctrine-orm,doctrine,symfony,Doctrine Orm,Doctrine,Symfony,我的表格如下:产品id->名称、说明、价格 我想检索所有产品,所以这是我检索产品的代码 $doc = $this->getDoctrine(); $em = $doc->getEntityManager(); $conn = $em->getConnection(); $repo = $doc->getRepository('AppBundle:Products'); $query = $repo->createQueryBu

我的表格如下:产品id->名称、说明、价格

我想检索所有产品,所以这是我检索产品的代码

    $doc = $this->getDoctrine();
    $em = $doc->getEntityManager();
    $conn = $em->getConnection();
    $repo = $doc->getRepository('AppBundle:Products');
    $query = $repo->createQueryBuilder('p')->getQuery();
    $sql = $query->getSql();
    $stmt = $conn->prepare($sql);
    $stmt->execute();
    $products = $stmt->fetchAll(\PDO::FETCH_ASSOC);
问题是,在生成查询时,总是在列名之后添加列索引后缀作为别名

所以结果会是这样的:

[
    {"product_id_0":"1","name_1":"Name1","description_2":"Desc1","price_3":"100"},
    {"product_id_0":"2","name_1":"Name2","description_2":"Desc2","price_3":"200"}
]
注意,它们的后缀像_0,_1,在我不想要的列名之后,
如果没有这样的别名,我如何构建查询?

您已经有了一个存储库

当您有一个存储库时,您不需要创建原始SQL查询,甚至不需要使用创建的查询。让条令负责(这是DBAL,条令的数据库抽象层)

相反,使用类似于
findAll()
findBy()
的方法来获取对象

例如:

$repo = $doc->getRepository('AppBundle:Products');
$results = $repo -> findAll();

// Returns array(Product, Product, ...), which should be mapped to an entity
// so that you can use $product -> getName() or whatever you need.
您还可以创建查询以获取数组结果:

$results = $repo -> createQueryBuilder('p') -> getQuery() -> getArrayResult();

文档:

用$query->fetchArray替换最后一行for。更好的方法是使用fetchAll并处理对象@Cerad在类条令\ORM\Query和条令\DBAL\Statement中没有名为fetchArray的方法。我键入得太快了$查询->getArrayResult()。谢谢,我还有一个问题。。。如果我想得到我定义为product_id而不是productId的真实列,我该怎么做呢?我认为您还没有完全掌握对象关系管理器的概念。听起来您希望在sql级别工作,这很好。看看Doctrine的数据库访问层:谢谢,我还有一个问题。。。如果我想得到我定义的像product_id而不是productId的真实列,我该怎么做?