0

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();

構成ファイルを使用して、select と left を動的に結合しました。したがって、人々は独自の結合を行うことができます。しかし、(たとえば)ユーザーとアドレスがある場合。アドレスを持つユーザーのみが表示されます。アドレスのないユーザーは表示されません。参加していないときは、すべてのユーザーが表示されます。誰かがそれについて考えていますか?where句を設定して次のようなことをする必要があるようなものを読みました:

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

うまくいきません。アドレスなしですべてのユーザーを結合して表示するにはどうすればよいですか?

グルツ

4

1 に答える 1

0

where句に問題があります。それには、彼が「通り」(住所から)を好きになりたい場所に「好き」がありました。しかし、ユーザーがアドレスを持っていない場合、彼は気に入らず、ユーザー全体を表示しません。

于 2013-05-02T12:15:16.707 に答える