gpt4 book ai didi

php - Symfony2 使用查询生成器加载特定的 ManyToMany 对象

转载 作者:行者123 更新时间:2023-11-30 22:26:45 25 4
gpt4 key购买 nike

我的产品可以有很多类别。然而,在对象的一部分中,我需要获得一个特定的类别。因此,我不需要获取所有类别然后在 for 循环中搜索特定类别,我只需要获取该特定类别。为此,我正在使用查询生成器。

public function findProduct($id) {
$qb = $this->createQueryBuilder('p')
->addSelect(array('p', 'cat')) // many to many table
->addSelect(array('p', 'category')) // the category entity
->leftJoin('p.category', 'cat')
->leftJoin('cat.category', 'category')
->andWhere("category.id = 15") // error here
->SetParameter('id', $id);


return $qb->getQuery()->getOneOrNullResult();
}

通过此查询,我可以轻松地执行 $product->getCategory[0]([] since array) 并仅获取我需要的类别(在此示例中,类别为 id=15 )

问题:

但是,如果产品没有具有特定 ID 的类别。它会返回整个产品 null。

所以如果我这样做:

 $product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = null

但它应该是这样的:

 $product = $em->getRepository('MpShopBundle:Product')->findProduct($id); = object

$product->getCategory() = null

我怎样才能在查询生成器中使用它?这可能吗?

最佳答案

这应该有效。与其限制整个查询(这就是它所做的),不如限制连接)。

leftJoin('cat.category', 'category', 'WITH', 'category.id = 15')

这样你应该总是得到你的产品 & 仅当 id == 15 时才分类。

关于php - Symfony2 使用查询生成器加载特定的 ManyToMany 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34987754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com