我试图在存储库中获取完全水合的对象,具体取决于本机中的子查询 查询(在客户订单中查找与其他产品类似的产品)
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)
感谢您的帮助,
此致