0

我是 Symfony2 的新手,我想知道是否有一种方法可以将“findBy”与仅存在于映射实体中的参数一起使用。

这是我的片段控制器:

$prods = $em->getRepository('EcommerceProductBundle:ProductData')
    ->findBy(array(
        'product_id'=>46
    ));

它工作得很好,但是如果我尝试向数组中添加另一个元素,该元素存在于映射实体中,它会(正确地)得到这个错误

Unrecognized field: ProductImage.is_visible  

我想做的只是知道我是否可以将“filterBy”与实体ProductData的映射元素一起使用。

我错了,但这是我的想法:

->findBy(array(
  'product_id'=>46,
  'ProductImage.is_visible'=>1    
));
4

2 回答 2

0

你不能这样做,你需要在存储库中编写一个带有 join 子句的自定义方法。

findBy 方法只是在条件上添加一个 where 子句。

于 2013-07-11T14:21:11.480 回答
0

据我所知不可能。只需将此自定义方法添加到您的存储库:

public function findByIdAndVisibleImage($id)
{
    return $this->createQueryBuilder('product')
        ->lefJoin("product.image","i")
        ->where("product.product_id = :id")
        ->andWhere("i.is_visible = 1") 
        ->setParameter("id", $id)
        ->getQuery()
        ->getSingleResult();
 }
于 2013-07-11T14:21:47.077 回答