如何改变Doctrine" findBy / findOneBy"函数减少查询次数的行为?

时间:2014-04-02 11:36:42

标签: sql symfony doctrine-orm

我正在使用Doctrine处理Symfony2。 我想知道如何改变" findBy"的行为。检索我的实体时的功能。

例如,如果您调用" findAll()",则会返回所有产品。

$entities = $em->getRepository('ShopBundle:Product')->findAll();

但是,如何减少查询数量,因为默认情况下,每次我想要将成员链接到连接列时,它都会创建一个新查询。因此,如果我获得100个实体,它将处理101个查询(1个获取所有实体,1个实体获取连接列)。 所以今天,我通过指定连接使用createQuery()函数。有没有办法配置有关findBy函数的东西来跳过createQuery方法?

提前致谢!

K4

1 个答案:

答案 0 :(得分:0)

您可以通过以下方式获取此内容

 public function findUser() {
        $query = $this->getEntityManager()
                ->createQuery('SELECT us.id as id, us.name as user_name FROM Bundle:User us');
        try {
            return $query->getResult();
        } catch (\Doctrine\ORM\NoResultException $e) {
            return null;
        }
    }