2016-03-21 4 views
0

Ich habe eine Entität Person mit einer OneToOne Beziehung mit FooBar, wobei FooBar Nullable ist.In Symfony2 mit Doctrine möchte ich nur Datensätze erhalten, die keinen verknüpften Datensatz haben

Ich möchte QueryBuilder verwenden, um alle Leute zu bekommen, die keine Foobars haben. Ich habe versucht, diese

$queryBuilder = $this->createQueryBuilder('p') 
    ->innerJoin('p.foo_bar', 'fb', 'WITH', 'fb.id IS NULL'); 

zu tun, aber das liefert keine Ergebnisse, und ich weiß, ich habe einige Leute ohne foobars?

Antwort

0

Sie müssen zuerst links verbinden, dann beschränken. Dein InnerJoin wird einfach nicht so funktionieren.

So etwas wie (ich kann nicht Syntaxprüfung jetzt);

$qb = $this->createQueryBuilder('p'); 

$qb->leftJoin('p.foo_bar', 'fb') 
     ->where($qb->expr()->isNull('fb')) 
     ->getQuery()->getResult(); 

Sollte der Trick tun. Möglicherweise benötigen Sie auch einen addSelect für den fb-Alias.

Verwandte Themen