【问题标题】:Symfony 2 "findBy" a mapped entity parameter into controllerSymfony 2“findBy”将实体参数映射到控制器中
【发布时间】:2013-07-11 14:05:00
【问题描述】:

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

这是我的 sn-p 控制器:

$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    
));

【问题讨论】:

    标签: php symfony doctrine-orm entity


    【解决方案1】:

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

    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();
     }
    

    【讨论】:

    • 是的,我已经编写了一个自定义查询,但我想知道没有它是否可能。还是谢谢。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多