[英]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.