繁体   English   中英

使用symfony findBy方法的嵌套查询

[英]Nested queries using symfony findBy method

我有两个实体CategoryItem 我想访问特定类别下的所有项目。
目前,我正在执行以下操作:

  • 获取与给定类别对应的实体
  • 通过将在上一步category选择的category作为参数传递给findBy方法来获取所有项。

这是我的代码:

 public function indexAction($category)
  {
    $em = $this->getDoctrine()->getManager();

    $category = $em -> getRepository('AppBundle:Category')
    -> findOneBy(array(
      "name" => $category
    ));

    $entities = $em->getRepository('AppBundle:Item')
    ->findBy(array(
      'category' => $category
    ));

    return array(
      'entities' => $entities,
      'title' => $category
    );
  }

我做对了吗? 在这种情况下,我需要两个单独的查询。 有什么有效的方法吗?

您的Category实体与Item是否具有OneToMany关系( http://symfony.com/doc/current/book/doctrine.html#entity-relationships-associations )?

如果是这样,可以通过在Category实体类中定义一个新方法来建立连接并使用该连接来获取与某个Category对应的所有Items。 就像是:

public function findOneByNameJoinedToItems($category)
{
$query = $this->getEntityManager()
    ->createQuery(
        'SELECT c, i FROM AppBundle:Category c
        JOIN c.item i
        WHERE c.name = :name'
    )->setParameter('name', $category);

try {
    return $query->getSingleResult();
} catch (\Doctrine\ORM\NoResultException $e) {
    return null;
}

}

有关更多信息,请参见此处: http : //symfony.com/doc/current/book/doctrine.html#joining-related-records

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM