我是Symfony2的新手,我想知道是否有一种方法可以将“findBy”用于仅存在于映射实体中的param。
这是我的代码段控制器:
$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
));
答案 0 :(得分:0)
您不能这样做,您需要使用join子句在存储库中编写自定义方法。
findBy方法只是在条件上添加了where子句。
答案 1 :(得分: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();
}