Класс '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
документ.
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;
}
}