andWhere('.done = :done') ->setParameter(':done', $done); } public function joinUser(): self { if (!$this->isJoinUser) { $this->isJoinUser = true; return $this ->leftJoin('.users', 'u'); } return $this; } public function filterByUser(UserInterface $user): self { $this->joinUser(); return $this ->having('COUNT(u.id) = 0') ->orHaving(':user MEMBER OF .users') ->setParameter(':user', $user); } public function filterByCrudAction(string $crudAction): self { if (is_null($crudAction)) { return $this ->andWhere('.crudControllerFqcn IS NULL'); } else { return $this ->andWhere('.crudAction = :crudAction') ->setParameter(':crudAction', $crudAction); } } public function filterByCrudControllerFqcn(string $crudControllerFqcn): self { if (is_null($crudControllerFqcn)) { return $this ->andWhere('.crudControllerFqcn IS NULL'); } else { return $this ->andWhere('.crudControllerFqcn = :crudControllerFqcn') ->setParameter(':crudControllerFqcn', $crudControllerFqcn); } } public function filterByEntityId(int $entityId): self { if (is_null($entityId)) { return $this ->andWhere('.entityId IS NULL'); } else { return $this ->andWhere('.entityId = :entityId') ->setParameter(':entityId', $entityId); } } public function filterIsNotDone(): self { return $this ->andWhere('.done = 0'); } public function filterLikeCrudAction(string $crudAction): self { return $this ->andWhere('.crudAction LIKE :crudAction') ->setParameter('crudAction', $crudAction); } public function filterLikeCrudControllerFqcn(string $crudControllerFqcn): self { return $this ->andWhere('.crudControllerFqcn LIKE :crudControllerFqcn') ->setParameter('crudControllerFqcn', $crudControllerFqcn); } public function filterLikeEntityId(int $entityId): self { return $this ->andWhere('.entityId LIKE :id') ->setParameter('entityId', $entityId); } }