使用子查询结果symfony2使用本机查询来对象对象

时间:2016-05-13 16:19:42

标签: php mysql symfony doctrine-orm

我试图在存储库中获取完全水合的对象,具体取决于本机中的子查询 查询(在客户订单中查找与其他产品类似的产品)

SQL查询按预期工作

$sql = 'SELECT
        (
            SELECT p2.id_produit FROM produit p2
            WHERE p2.id_produit != produit.id_produit
            LIMIT 1
         ) as similar
        FROM item_commande
        INNER JOIN produit ON (produit.id_produit = item_commande.id_produit)
        INNER JOIN produit_to_categorie ON (produit_to_categorie.id_produit = produit.id_produit)
        GROUP BY produit_to_categorie.id_categorie
        LIMIT 6'
;

但是当我使用教条时

$rsm = new \Doctrine\ORM\Query\ResultSetMappingBuilder($this->getEntityManager());
$rsm->addRootEntityFromClassMetadata('ProductBundle:Product', 'similar');

$query = $this->getEntityManager()->createNativeQuery($sql, $rsm);
dump($query->getResult());

执行此操作时的第一个问题: 返回的产品是产品之一,我需要类似的返回产品

所以我试过这个:

$rsm = new \Doctrine\ORM\Query\ResultSetMapping;
$rsm->addEntityResult('ProductBundle\Entity\Product','p');
$rsm->addFieldResult('p','similar','id');

这是工作但对象没有完全补水(只有id)

感谢您的帮助,

此致

0 个答案:

没有答案