Symfony Cache пытается создать экземпляр Doctrine\ODM\MongoDB\Repository\DocumentRepository
, передав аргумент 1 в виде строки.Это полное имя класса.Но DocumentReposity ожидает экземпляр DocumentManager в качестве первого аргумента.
Ниже кода.UserRepository расширяется Doctrine\ODM\MongoDB\Repository\DocumentRepository
.И это ожидает экземпляр, а не строку в конструкторе.
Это проблема Doctrine ODM или проблема Symfony и как я могу ее решить?
Спасибо!
Ошибка:
Неустранимая ошибка: Uncaught Symfony \ Component \ Debug \ Exception \ FatalThrowableError: Аргумент 1 передан в Doctrine \ ODM \ MongoDB \ Repository \ DocumentRepository :: __ construct () должен быть экземпляром Doctrine \ODM \ MongoDB \ DocumentManager, строка с указанием , вызывается в /var/www/html/var/cache/dev/ContainerPtWsxJ7/getPlatform_User_ProviderService.php в строке 9 в / var / www / html / vendor / doctrine / mongodb-odm/lib/Doctrine/ODM/MongoDB/Repository/DocumentRepository.php:52 Трассировка стека: # 0 /var/www/html/var/cache/dev/ContainerPtWsxJ7/getPlatform_User_ProviderService.php(9): Doctrine \ ODM \ Mongory\ DocumentRepository -> __ construct ('Foo \ ApiB ...') 1 /var/www/html/var/cache/dev/ContainerPtWsxJ7/appAppKernelDevContainer.php(157): require ('/ var / www / html / v... ') # 2 / var / www / html / var / cache / dev / ContainerPtWsxJ7/getFosOauthServer_ServerService.php(9): ContainerPtWsxJ7 \ appAppKernelDevContainer-> load ('getPlatform_Use ...') 3 /var/www/html/var/cache/dev/ContainerPtWsxJ7/appAppContain.service ()/ www / html / v ... ') # 4 / var / www / html в /var/www/html/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Repository/DocumentRepository.php онлайн52
Кэшированный класс getPlatform_User_ProviderService.php:
use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
// This file has been auto-generated by the Symfony Dependency Injection Component for internal use.
// Returns the private 'platform.user.provider' shared service.
return $this->privates['platform.user.provider'] =
new \Foo\ApiBundle\Provider\UserProvider(
($this->privates['platform.user.repository'] ?? $this->privates['platform.user.repository']
= new \Foo\ApiBundle\Document\Repository\UserRepository('Foo\\ApiBundle\\Document\\User'))
);
UserRepository:
namespace Foo\ApiBundle\Document\Repository;
use Doctrine\ODM\MongoDB\DocumentRepository;
use Foo\ApiBundle\Document\Company;
class UserRepository extends DocumentRepository {
public function findByCompany(Company $company, $limit = 5, $skip = 0) {
$qb = $this->createQueryBuilder();
return $qb->field('company.$id')->equals(new \MongoId($company->getId()))
->field('disabled')->equals(false)
->limit($limit)
->skip($skip)
->getQuery()->execute();
}
public function findOneByActivationHash($hash) {
return $this->findOneBy(array('activationHash' => $hash));
}
...removed the rest of the methods...
}
Пользовательский документ и аннотация:
/**
* @MongoDB\Document(collection="users",repositoryClass="Foo\ApiBundle\Document\Repository\UserRepository")
* @MongoDB\InheritanceType("SINGLE_COLLECTION")
* @MongoDB\Indexes({
* @MongoDB\Index(keys={"username"="asc"},unique=true)
* })
* @MongoDB\HasLifecycleCallbacks
* @JMS\ExclusionPolicy("all")
* ...removed the rest of the annotations...
*/
abstract class User extends LegacyUser implements
\Symfony\Component\Security\Core\User\UserInterface {
services.xml, здесь все идет не так !!