createQueryBuilder('Action') ->andWhere('Action.event LIKE :eventName') ->setParameter('eventName', "%{$eventName}%") ->andWhere('Action.objectClass LIKE :objectClass') ->setParameter('objectClass', str_replace('\\', '\\\\', $objectClass)) ; return $qb->getQuery()->getResult(); } /** * @param string $eventName * @param string $workflowName * @param string $eventReference * @param string $objectClass * * @return array */ public function findAllByEventAndWorkflowName($eventName, $workflowName, $eventReference, $objectClass = null) { $qb = $this->createQueryBuilder('Action') ->andWhere('Action.event LIKE :eventName') ->setParameter('eventName', "%{$eventName}%") ->andWhere('Action.workflowName = :workflowName') ->setParameter('workflowName', $workflowName) ->andWhere('Action.eventReference = :eventReference') ->setParameter('eventReference', $eventReference) ; if ($objectClass) { $qb->andWhere('Action.objectClass = :objectClass') ->setParameter('objectClass', $objectClass); } return $qb->getQuery()->getResult(); } /** * @param string $workflowName Nombre del workflow * @param string $event Nombre del event * * @return array */ public function findByWorkflowAndEventRef($workflowName, $eventReference) { $actions = $this->createQueryBuilder('Action') ->andWhere('Action.eventReference = :eventReference') ->setParameter('eventReference', $eventReference) ->getQuery()->getResult(); $return = []; foreach ($actions as $action) { $workflows = array_map('trim', explode(',', $action->getWorkflowName())); if (in_array($workflowName, $workflows)) { $return[] = $action; } } return $return; } }