我有一个产品实体,我想获得所有提供产品的产品。
productHasImages
是Product
和Images
/**
* @ORM\OneToMany(targetEntity="ProductHasImage", mappedBy="product", cascade={"persist"}))
* @ORM\OrderBy({"sorting" = "ASC"})
*/
private $productHasImages;
所以我在Form-Entity中使用以下选项设置了querybuilder:
....
->add('product', EntityType::class, array(
'class' => 'AppBundle\Entity\Product',
'multiple' => false,
'expanded' => false,
'label' => 'product',
'translation_domain' => 'product',
'query_builder' => function (EntityRepository $er) use ($portal) {
return $er->createQueryBuilder('p')
->select('p')
->addSelect('COUNT(p.productHasImages) AS productHasImagesCount')
->having('productHasImagesCount > 1');
}
))
没有Count Query,我得到所有的参与者,但有了它,我得到一个错误:
[Semantical Error] line 0, col 18 near 'productHasImages)': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.
有人可以帮我吗?谢谢!
答案 0 :(得分:0)
你应该这样做
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('p')
->where('SIZE(p.productHasImages)>0');
}
" SIZE(collection) - 返回指定集合中的元素数量"