Doctrine – dotaz zda existují prvky v kolekci

- kejlicz
 - Člen | 201
 
Ahoj všem.
Lámu si hlavu s tím, jak v Doctrine zapsat dotaz, abych získal toto:
Mám entitu JobAgent, ta má kolekci jobs, které může obsahovat
entity Job.
Potřebuji vrátit entity JobAgent, které mají nějaké entity Job s té kolekci jobs. Zní to jednoduše a asi to i jednoduché bude, ale já už tady šílím a nemůžu nic najít.
Díky moc za pomoc.

- Marek Šneberger
 - Člen | 130
 
Dotazem si vyhydratuješ jakékoli joby (třeba všechny), a pak jednouše v entitě Job například:
/**
* @return Job[]
 */
public function getActiveJobs()
{
	$jobs = $this->items->filter(function (Job $job) {
		return $job->isActive();
	});
	return $jobs->toArray();
}
					Editoval Marek Šneberger (12. 8. 2016 15:13)

- abc
 - Člen | 92
 
Není lepší na tohle použít Criteria – http://docs.doctrine-project.org/…iations.html#…
/**
* @return Job[]
 */
public function getActiveJobs()
{
	$criteria = Criteria::create();
	$criteria->where(Criteria::expr()->eq('active', TRUE);
	$jobs = $this->items->matching($criteria);
    return $jobs->toArray();
}
				
- jiri.pudil
 - Nette Blogger | 1034
 
Jestli potřebuješ filtrovat už na úrovni dotazu na JobAgent, pak
nejspíš hledáš DQL konstrukci MEMBER
OF: SELECT ja FROM JobAgent WHERE :jobId MEMBER OF ja.jobs

- kejlicz
 - Člen | 201
 
Úplně jsme se nepochopili. Koukám, že můj popis nechává prostor i pro jiný výklad. Omlouvám se. Pokud to chápu, reakce se týkají trochu něčeho jiného, ale to se také hodí a nastuju to :-)
Tak přesněji:
Potřebuji vrátit všechny entity JobAgent, které mají v kolekci jobs,
alespoň jeden prvek (Job). O jaký konkrétně jde Job mě nezajímá.

- David Matějka
 - Moderator | 6445
 
by mohlo jit
SELECT jobAgent FROM JobAgent jobAgent WHERE SIZE(jobAgent.jobs) > 0