private function getOperators($dataClass, $propertyPath)
    {
        $metadata = $this->registry->getManagerForClass($dataClass)->getClassMetadata($dataClass);

        if (false === strpos($propertyPath, '.')) {
            if ($metadata->hasAssociation($propertyPath)) {
                if ($metadata->isCollectionValuedAssociation($propertyPath)) {
                    return [
                        FilterOperator::MEMBER,
                        FilterOperator::NOT_MEMBER,
                    ];
                } else {
                    return [
                        FilterOperator::IN,
                        FilterOperator::NOT_IN,
                    ];
                }
            }
        } else {
            $paths = explode('.', $propertyPath);
            $path = array_shift($paths);

            if ($metadata->hasAssociation($path)) {
                return $this->getOperators(
                    $metadata->getAssociationTargetClass($path),
                    implode('.', $paths)
                );
            }
        }

        throw new InvalidArgumentException("Invalid property path '{$propertyPath}'.");
    }
private function getOperators($dataClass, $propertyPath)
    {
        $metadata = $this->registry->getManagerForClass($dataClass)->getClassMetadata($dataClass);

        if (false === strpos($propertyPath, '.')) {
            if ($metadata->hasAssociation($propertyPath)) {
                if ($metadata->isCollectionValuedAssociation($propertyPath)) {
                    return [
                        FilterOperator::MEMBER,
                        FilterOperator::NOT_MEMBER,
                    ];
                } else {
                    return [
                        FilterOperator::IN,
                        FilterOperator::NOT_IN,
                    ];
                }
            }
        } else {
            $paths = explode('.', $propertyPath);
            $path = array_shift($paths);

            if ($metadata->hasAssociation($path)) {
                return $this->getOperators(
                    $metadata->getAssociationTargetClass($path),
                    implode('.', $paths)
                );
            }
        }

        throw new InvalidArgumentException("Invalid property path '{$propertyPath}'.");
    }
private function getOperators ( $ dataClass , $ propertyPath ) { $ metadata = $ this -> registry -> getManagerForClass ( $ dataClass ) -> getClassMetadata ( $ dataClass ) ; if ( false === strpos ( $ propertyPath , '.' ) ) { if ( $ metadata -> hasAssociation ( $ propertyPath ) ) { if ( $ metadata -> isCollectionValuedAssociation ( $ propertyPath ) ) { return [ FilterOperator :: MEMBER , FilterOperator :: NOT_MEMBER , ] ; } else { return [ FilterOperator :: IN , FilterOperator :: NOT_IN , ] ; } } } else { $ paths = explode ( '.' , $ propertyPath ) ; $ path = array_shift ( $ paths ) ; if ( $ metadata -> hasAssociation ( $ path ) ) { return $ this -> getOperators ( $ metadata -> getAssociationTargetClass ( $ path ) , implode ( '.' , $ paths ) ) ; } } throw new InvalidArgumentException ( "Invalid property path '{$propertyPath}'." ) ; }
Returns the operators according to association type targeted by the property path.

@param $dataClass
@param $propertyPath

@return array
Returns the operators according to association type targeted by the property path .