use Doctrine\Common\Collections\Criteria;
class Company
{
protected employees;
function findDevelopers(): Collection
{
$expr = Criteria::expr();
$criteria = Criteria::create();
$criteria->where($expr->eq('position', 'developer'));
return $this->employees->matching($criteria);
}
}
function getStuff(): Array
{
$qb = $entityManager->createQueryBuilder();
$qb->select('assoc1.thing as thing1, assoc2.thing as thing2')
->from(assoc1::class, 'assoc1')
->innerJoin(assoc2::class, 'assoc2', 'with', 'assoc1.someId = assoc2.someId')
->where(
$qb->expr()->orX(
$qb->expr()->eq('assoc1.thing', 'foo'),
$qb->expr()->neq('assoc2.thing', 'bar')
)
)
->getQuery()
->getResult();
}