Класс «Doctrine\ODM\MongoDB\Cursor» не найден в цепочке сконфигурированных пространств имен AppBundle\Document.

В репозитории у меня есть этот код:

<?php

namespace AppBundle\Repository;

use Doctrine\ODM\MongoDB\DocumentRepository;

class ItemRepository extends DocumentRepository
{
    public function findAllQueryBuilder($filter = '')
    {
        $qb = $this->createQueryBuilder('item');

        if ($filter) {
            $cat = $this->getDocumentManager()
                ->getRepository('AppBundle:Category')
                ->findAllQueryBuilder($filter)->getQuery()->execute();


            $qb->field('category')->includesReferenceTo($cat);
        }

        return $qb;
    }
}

Но выдает эту ошибку:

The class 'Doctrine\ODM\MongoDB\Cursor' was not found in the chain configured namespaces AppBundle\Document 

В чем проблема?

Я проверил $cat, он возвращает правильный category документ.


person Arash Mousavi    schedule 28.06.2016    source источник
comment
не могли бы вы добавить, где вы определили свою сущность и часть конфигурации ORM? этот ответ может помочь вам stackoverflow.com/questions/22813300/   -  person zizoujab    schedule 29.06.2016


Ответы (1)


Переменная $cat является экземпляром Doctrine\ODM\MongoDB\Cursor. но это должен быть экземпляр документа. Таким образом, код должен измениться на:

<?php

namespace AppBundle\Repository;

use Doctrine\ODM\MongoDB\DocumentRepository;

class ItemRepository extends DocumentRepository
{
    public function findAllQueryBuilder($filter = '')
    {
        $qb = $this->createQueryBuilder('item');

        if ($filter) {
            $cats = $this->getDocumentManager()
                ->getRepository('AppBundle:Category')
                ->findAllQueryBuilder($filter)->getQuery()->execute();

            foreach ($cats as $cat) {
                $qb->field('category')->includesReferenceTo($cat);
            }
        }

        return $qb;
    }
}
person Arash Mousavi    schedule 29.06.2016