Doctrine2 - 通过示例查询

时间:2014-05-30 10:50:53

标签: php doctrine-orm

我对学说2很新。我想通过实例进行查询 - 就像在Hibernate中一样。基本上,您将部分填充的权利对象作为查询参数,ORM返回所有匹配的对象。更多信息:http://java.dzone.com/articles/hibernate-query-example-qbe

有这样的功能吗?我所发现的就是能够将包含id字段的实体作为参数,但其他字段呢?

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式查询,而不仅仅是基于ID。

如果你需要根据first_name&获取学说对象。 last_name,你可以这样做。

$em = $this->getDoctrine()->getManager();
$em->getRepository('ACMETestBundle:Person')->findBy(array('first_name' => 'david', 'last_name' => 'john'));

如果您需要根据相同的名字和姓氏找到一个结果,它将是这样的。

$em = $this->getDoctrine()->getManager();
$em->getRepository('ACMETestBundle:Person')->findOneBy(array('first_name' => 'david', 'last_name' => 'john'));

如果您需要查询并获取数组。您可以使用以下选项。

$em = $this->getDoctrine()->getManager();
$result = $em->createQueryBuilder();
$contacts = $result->select('p')
            ->from('ACMETestBundle:Person', 'p')
            ->where('p.first_name = :fName')
            ->andWhere('p.last_name = :lName')
            ->setParameter('fname', 'david')
            ->setParameter('lname', 'john')
            ->getQuery()
            ->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);

所以基本上有许多方法/选项可以循环查询,而不仅仅是限制为id。

希望这会对你有所帮助。

干杯!