[英]Nested queries using symfony findBy method
我有两个实体Category
和Item
。 我想访问特定类别下的所有项目。
目前,我正在执行以下操作:
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.