Doctrine orm Symfony 3原则如何构建没有列索引后缀的查询
我的表格如下:产品id->名称、说明、价格 我想检索所有产品,所以这是我检索产品的代码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
$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的真实列,我该怎么做?