/** * @param Organization $organization * @param Party $publisher * @return ArrayCollection */ public function booksOfPublisher(Organization $organization, Party $publisher) { $qb = $this->em->createQueryBuilder(); $query = $qb->select('b')->from($this->bookClass, 'b')->join('b.publishers', 'p')->where($qb->expr()->eq('p.id', '?1'))->setParameter(1, $publisher->id()); return $query->getQuery()->getResult(); }
/** * Destroys a relation that was alive before a given date * * @param Party $context * @param Party $reference * @param DateTime $date * @param Kind $kind */ public function destroyBefore(Party $context, Party $reference, DateTime $date, Kind $kind) { $qb = $this->em->createQueryBuilder(); $qb->select('pr')->update($this->class, 'pr')->set('pr.end', '?5')->where($qb->expr()->eq('pr.context', '?1'), $qb->expr()->eq('pr.reference', '?2'), $qb->expr()->lt('pr.start', '?3'), $qb->expr()->isNull('pr.end'), $qb->expr()->eq('pr.kind', '?4'))->setParameter(1, $context->id())->setParameter(2, $reference->id())->setParameter(3, $date)->setParameter(4, $kind)->setParameter(5, new DateTime()); $qb->getQuery()->execute(); }