src/Sulu/Component/Rest/ListBuilder/Doctrine/DoctrineListBuilder.php
protected function getNecessaryJoins($necessaryEntityNames)
    {
        $addJoins = [];

        // iterate through all field descriptors to find necessary joins
        foreach ($this->getAllFields() as $key => $field) {
            // if field is in any conditional clause -> add join
            if (($field instanceof DoctrineFieldDescriptor || $field instanceof DoctrineJoinDescriptor) &&
                false !== array_search($field->getEntityName(), $necessaryEntityNames)
                && $field->getEntityName() !== $this->entityName
            ) {
                $addJoins = array_merge($addJoins, $field->getJoins());
            } else {
                // include inner joins
                foreach ($field->getJoins() as $entityName => $join) {
                    if (DoctrineJoinDescriptor::JOIN_METHOD_INNER !== $join->getJoinMethod() &&
                        false === array_search($entityName, $necessaryEntityNames)
                    ) {
                        break;
                    }
                    $addJoins = array_merge($addJoins, [$entityName => $join]);
                }
            }
        }

        if ($this->user && $this->permission && array_key_exists($this->permission, $this->permissions)) {
            foreach ($this->permissionCheckFields as $permissionCheckField) {
                $addJoins = array_merge($addJoins, $permissionCheckField->getJoins());
            }
        }

        return $addJoins;
    }
protected function getNecessaryJoins($necessaryEntityNames)
    {
        $addJoins = [];

        // iterate through all field descriptors to find necessary joins
        foreach ($this->getAllFields() as $key => $field) {
            // if field is in any conditional clause -> add join
            if (($field instanceof DoctrineFieldDescriptor || $field instanceof DoctrineJoinDescriptor) &&
                false !== array_search($field->getEntityName(), $necessaryEntityNames)
                && $field->getEntityName() !== $this->entityName
            ) {
                $addJoins = array_merge($addJoins, $field->getJoins());
            } else {
                // include inner joins
                foreach ($field->getJoins() as $entityName => $join) {
                    if (DoctrineJoinDescriptor::JOIN_METHOD_INNER !== $join->getJoinMethod() &&
                        false === array_search($entityName, $necessaryEntityNames)
                    ) {
                        break;
                    }
                    $addJoins = array_merge($addJoins, [$entityName => $join]);
                }
            }
        }

        if ($this->user && $this->permission && array_key_exists($this->permission, $this->permissions)) {
            foreach ($this->permissionCheckFields as $permissionCheckField) {
                $addJoins = array_merge($addJoins, $permissionCheckField->getJoins());
            }
        }

        return $addJoins;
    }
protected function getNecessaryJoins ( $ necessaryEntityNames ) { $ addJoins = [ ] ; // iterate through all field descriptors to find necessary joins foreach ( $ this -> getAllFields ( ) as $ key => $ field ) { // if field is in any conditional clause -> add join if ( ( $ field instanceof DoctrineFieldDescriptor || $ field instanceof DoctrineJoinDescriptor ) && false !== array_search ( $ field -> getEntityName ( ) , $ necessaryEntityNames ) && $ field -> getEntityName ( ) !== $ this -> entityName ) { $ addJoins = array_merge ( $ addJoins , $ field -> getJoins ( ) ) ; } else { // include inner joins foreach ( $ field -> getJoins ( ) as $ entityName => $ join ) { if ( DoctrineJoinDescriptor :: JOIN_METHOD_INNER !== $ join -> getJoinMethod ( ) && false === array_search ( $ entityName , $ necessaryEntityNames ) ) { break ; } $ addJoins = array_merge ( $ addJoins , [ $ entityName => $ join ] ) ; } } } if ( $ this -> user && $ this -> permission && array_key_exists ( $ this -> permission , $ this -> permissions ) ) { foreach ( $ this -> permissionCheckFields as $ permissionCheckField ) { $ addJoins = array_merge ( $ addJoins , $ permissionCheckField -> getJoins ( ) ) ; } } return $ addJoins ; }
Function returns all necessary joins for filtering result.

@param string[] $necessaryEntityNames

@return DoctrineFieldDescriptorInterface[]
Function returns all necessary joins for filtering result .