/** * @param array $entities * @param $alias * @param string $conditionType * @param int $type * @param array $mapping * @return \Carrooi\Doctrine\Queries\Tree\Condition */ protected function createNestedTreeSearchCondition(array $entities, $alias, $conditionType = SearchType::CONDITION_OR, $type = SearchType::SEARCH_EVERYWHERE, array $mapping = []) { if ($conditionType === null) { $conditionType = SearchType::CONDITION_OR; } if ($type === null) { $type = SearchType::SEARCH_EVERYWHERE; } $mapping = $this->getMappingConfiguration($mapping); $condition = ['condition' => [], 'parameters' => []]; foreach ($entities as $entity) { $entityCondition = $this->createConditionForEntity($type, $entity, $alias, $mapping); $condition['condition'][] = $entityCondition['condition']; $condition['parameters'] = array_merge($condition['parameters'], $entityCondition['parameters']); } switch ($conditionType) { case SearchType::CONDITION_OR: $expr = new Orx(); break; case SearchType::CONDITION_AND: $expr = new Andx(); break; default: throw new InvalidArgumentException('Unknown condition type ' . $conditionType . '.'); break; } $condition['condition'] = $expr->addMultiple($condition['condition']); return new Condition($condition['condition'], $condition['parameters']); }