2017-03-28 4 views
1

Ich habe meine benutzerdefinierten Repositories nach der symfony docs definiert und folgte dieser blog post, um sie als einen Dienst zu definieren. Dies funktioniert in der Regel gut, außer ich manchmal die Ausnahme erhalten:Argument übergeben an __construct() erwartet SomeRepository, Instanz von EntityRepository statt

FatalThrowableError in SomeService.php line 20: Type error: Argument 3 passed to SomeService::__construct() must be an instance of SomeRepository, instance of Doctrine\ORM\EntityRepository given, called in var/cache/dev/appDevDebugProjectContainer.php on line 7651

Dies geschieht ziemlich viel, und normalerweise den Cache zu löschen und die Lehre Metadatencache löst es. Aber manchmal nicht.

Ich verstehe nicht wirklich, warum das passiert oder wie es in den Zeiten zu beheben, dass das Löschen des Cache nicht funktioniert. Ich weiß, dass diese Frage (oder Derivat davon) hat viel gefragt worden, wie here, here, here, here und here. Aber keine dieser Antworten löst tatsächlich mein Problem, denn soweit ich sehen kann, habe ich alles richtig definiert, außerdem haben wir eine Menge anderer Repositories, die auf die gleiche Weise definiert sind und alle funktionieren gut.

# services.yml 
app.repository.some: 
    class: AppBundle\Repository\SomeRepository 
    factory: ["@doctrine.orm.default_entity_manager", getRepository] 
    arguments: 
     - AppBundle\Entity\Some 

app.some_service: 
    class: AppBundle\Services\SomeService 
    arguments: 
     - "@app.repository.some" 
// Repository class 
<?php 

namespace AppBundle\Repository; 

use Doctrine\ORM\EntityRepository; 

class SomeRepository extends EntityRepository 
{ 

} 
// Entity class 
<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity(repositoryClass="AppBundle\Repository\SomeRepository") 
* @ORM\Table() 
* @ORM\Entity 
*/ 
class Some 
{ 
// Service class 
<?php 

namespace AppBundle\Services; 

use AppBundle\Repository\SomeRepository; 

class NotificationService 
{ 
    /** @var SomeRepository */ 
    protected $someRepository; 

    public function __construct(
     SomeRepository $someRepository, 
    ) { 

Gibt es einen anderen Cache, der gelöscht werden muss oder etwas, was ich vermisst habe?

Antwort

2

Die zweite @ORM \ Entity loswerden und es wird gut funktionieren

+0

Kann ich nicht glauben, dass ich das verpasst habe ... –

Verwandte Themen