不使用Doctrine 2 querybuilder检索所有对象

时间:2013-05-02 09:38:15

标签: join doctrine-orm zend-framework2 query-builder

我使用querybuilder进行了查询。它看起来像:

//Create a Querybuilder
        $qb = $this->_em->createQueryBuilder();

        //Foreach entity, check if it's a join and leftjoin it.
        //If there's no join, make it the select
        foreach($config['entities'] as $name => $entity)
        {
            //add new alias(ses) to select statement
            $qb->addSelect($entity['alias']);

            if(!isset($entity['join'])){
                $qb->from($entity['path'], $entity['alias']);
            } else {
                $qb->leftJoin($entity['join'], $entity['alias']);
            }
        }
           ->orWhere(':test IS NULL')
       ->setParameter('test', 'User\Entity\Address');

    //Make the query
    $query = $qb->getQuery();

    //Return the result
    return $query->getResult();

我已经使用配置文件动态选择并离开了。所以人们可以自己加入。但是当我有(例如)用户和地址时。它仅显示具有地址的用户。没有地址的用户不会显示。当我没有加入时,所有用户都会出现。有人对此有所了解吗?我读过类似于设置where子句的内容,并执行以下操作:

->orWhere(':test IS NULL')
           ->setParameter('test', 'User\Entity\Address');

它不起作用。我怎样才能有联接并显示所有用户也没有地址?

Grtz

1 个答案:

答案 0 :(得分:0)

我的where子句出了问题。它有一个"喜欢"在其中,他想要喜欢街道" (从地址)到某事。但是当用户没有地址时,他不会喜欢,所以他不会向整个用户显示。