Doctrine – jak získat řádky na které nevedou žádné vazby
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- lvq
 - Člen | 47
 
Ahoj, mám dvě tabulky, zjednodušeně: Article a
Photo. Tyto dvě tabulky mají mezi sebou vazbu:
class Article
{
	/**
	 * @var Photo[]|ArrayCollection
	 * @ORM\OneToMany(targetEntity="Article", mappedBy="article")
	 */
	private $photos;
}
class Photo
{
	/**
	 * @var Article
	 * @ORM\ManyToOne(targetEntity="Article", inversedBy="photos")
	 * @ORM\JoinColumn(referencedColumnName="id", nullable=TRUE)
	 */
	private $article;
}
A teď potřebuji získat všechny články, ke kterým nejsou přiřazeny
žádné fotky. Potřebuji to jako DQL, protože to budu kombinovat s dalšími
dotazy.
Měl jsem zato, že bude fungovat toto:
$qb = $repository->createQueryBuilder();
$qb
	->select('a')
	->from(Article::class, 'a');
$qb
	->andWhere('a.id NOT IN (
			SELECT DISTINCT IDENTITY(psq.article)
			FROM ' . Photo::class . ' psq
	)');
ale nefuguje :-( Už mě nenapadá, jak to jinak udělat. Ten vnitřní
SELECT správně vrací pole s id článků.
Díky za vaši pomoc.