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');
うまくいきません。アドレスなしですべてのユーザーを結合して表示するにはどうすればよいですか?
グルツ