protected function loadCategories(ContextInterface $context)
    {
        if (\array_key_exists($context->getId(), $this->categories)) {
            return;
        }

        $class = $this->getClass();

        $categories = $this->getObjectManager()->createQuery(sprintf('SELECT c FROM %s c WHERE c.context = :context ORDER BY c.parent ASC', $class))
            ->setParameter('context', $context->getId())
            ->execute();

        if (0 === \count($categories)) {
            // no category, create one for the provided context
            $category = $this->create();
            $category->setName($context->getName());
            $category->setEnabled(true);
            $category->setContext($context);
            $category->setDescription($context->getName());

            $this->save($category);

            $categories = [$category];
        }

        $rootCategories = [];
        foreach ($categories as $pos => $category) {
            if (null === $category->getParent()) {
                $rootCategories[] = $category;
            }

            $this->categories[$context->getId()][$category->getId()] = $category;

            $parent = $category->getParent();

            $category->disableChildrenLazyLoading();

            if ($parent) {
                $parent->addChild($category);
            }
        }

        $this->categories[$context->getId()] = $rootCategories;
    }
protected function loadCategories(ContextInterface $context)
    {
        if (\array_key_exists($context->getId(), $this->categories)) {
            return;
        }

        $class = $this->getClass();

        $categories = $this->getObjectManager()->createQuery(sprintf('SELECT c FROM %s c WHERE c.context = :context ORDER BY c.parent ASC', $class))
            ->setParameter('context', $context->getId())
            ->execute();

        if (0 === \count($categories)) {
            // no category, create one for the provided context
            $category = $this->create();
            $category->setName($context->getName());
            $category->setEnabled(true);
            $category->setContext($context);
            $category->setDescription($context->getName());

            $this->save($category);

            $categories = [$category];
        }

        $rootCategories = [];
        foreach ($categories as $pos => $category) {
            if (null === $category->getParent()) {
                $rootCategories[] = $category;
            }

            $this->categories[$context->getId()][$category->getId()] = $category;

            $parent = $category->getParent();

            $category->disableChildrenLazyLoading();

            if ($parent) {
                $parent->addChild($category);
            }
        }

        $this->categories[$context->getId()] = $rootCategories;
    }
protected function loadCategories ( ContextInterface $ context ) { if ( \ array_key_exists ( $ context -> getId ( ) , $ this -> categories ) ) { return ; } $ class = $ this -> getClass ( ) ; $ categories = $ this -> getObjectManager ( ) -> createQuery ( sprintf ( 'SELECT c FROM %s c WHERE c.context = :context ORDER BY c.parent ASC' , $ class ) ) -> setParameter ( 'context' , $ context -> getId ( ) ) -> execute ( ) ; if ( 0 === \ count ( $ categories ) ) { // no category, create one for the provided context $ category = $ this -> create ( ) ; $ category -> setName ( $ context -> getName ( ) ) ; $ category -> setEnabled ( true ) ; $ category -> setContext ( $ context ) ; $ category -> setDescription ( $ context -> getName ( ) ) ; $ this -> save ( $ category ) ; $ categories = [ $ category ] ; } $ rootCategories = [ ] ; foreach ( $ categories as $ pos => $ category ) { if ( null === $ category -> getParent ( ) ) { $ rootCategories [ ] = $ category ; } $ this -> categories [ $ context -> getId ( ) ] [ $ category -> getId ( ) ] = $ category ; $ parent = $ category -> getParent ( ) ; $ category -> disableChildrenLazyLoading ( ) ; if ( $ parent ) { $ parent -> addChild ( $ category ) ; } } $ this -> categories [ $ context -> getId ( ) ] = $ rootCategories ; }
Load all categories from the database, the current method is very efficient for < 256 categories.

@param ContextInterface $context
Load all categories from the database the current method is very efficient for < 256 categories .