繁体   English   中英

Doctrine2左联接产生意外结果

[英]Doctrine2 LEFT JOIN WITH producing unexpected result

我有以下查询:

<?php
$em = $this->getDoctrine()->getManager();

$data['ps'] = $em->createQuery('SELECT s,ps FROM AppBundle:Sucursales s LEFT JOIN AppBundle:ComprasProductosSucursales ps WITH s.id = ps.sucursal')->getResult();

但我得到如下图所示的结果:

![Doctrine2结果集示例] [1]

我希望$data['ps'][1]成为$data['ps'][0] ,否则数组的迭代将变得很奇怪。

因此,是否有可能获得联接表AppBundle:ComprasProductosSucursales的结果作为AppBundle:Sucursales数据的列?

奥姆斯:

AppBundle\Entity\Sucursales:
    type: entity
    table: sucursales
# Note: no relations defined, deleting the rest of the columns for clarity

AppBundle\Entity\ComprasProductosSucursales:
    type: entity
    table: compras_productos_sucursales

manyToOne:
    producto:
        targetEntity: ComprasProductos
    sucursal:
        targetEntity: Sucursales
        cascade: {  }

假设您的实体相关,那么通常您的DQL查询将类似于:

  $dql <<<EOT
SELECT s,ps FROM AppBundle:Sucursales s 
LEFT JOIN s.ps ps
EOT;

Doctrine会注意联接上的with条件,并将为您提供一组嵌套的结果。 假定您的Sucursales具有称为ps的集合属性。 我想我还假设您正在创建Doctrine 2实体并将它们关联。

更多信息: http : //doctrine-orm.readthedocs.org/en/latest/reference/dql-doctrine-query-language.html#joins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM