如何从条件中获得另一个实体的结果?

时间:2015-03-12 10:44:46

标签: php symfony doctrine-orm

我有两个实体。第一个是类别,第二个是产品。他们彼此处于ManytoOne和OneToMany之间。

$query = $repository->createQueryBuilder('category')->join('category.product', 'p');

if ($request->request->get("beginDate") != "") {
      $query->andWhere('p.date  >= :beginDate')
      ->setParameter('beginDate', $request->request->get("beginDate"));
}
if ($request->request->get("endDate") != "") {
      $query->andWhere("p.date <= :endDate")
      ->setParameter('endDate', $request->request->get("endDate"));
}

$categories = $query->getQuery()->getResult();

foreach($categories as $category){
    echo "Category: ".$category->getCategoryName()."<br />";
    foreach($category->getProduct() as $product){
        echo "Product: ".$product->getProductName()."<br />";
    }
}

我的问题是,当我拿到产品时,它会将所有产品打印到该类别。我认为当你使用OneToMany关系时这是正常的。但我想从条件真实的类别中获得这些产品。 也许我应该再建一个查询器?但后来我应该复制条件。还有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

哦,它已经解决了这个问题:

$query = $this->getDoctrine()->getEntityManager()->createQueryBuilder()
            ->select('category, product')
            ->from('ShopBundle:Categories', 'category')
            ->join('category.product', 'product');