2014-12-10 15 views
6

PhpStorm non sembra riconoscere alcuna delle mie classi di entità Doctrine o dei loro metodi.PhpStorm non riconosce le classi di entità Doctrine

$comment = $em->getRepository('MyBundle:Comment')->findOneBy(array('id' => $id)); 
    $comment->getId(); 
/* PHPSTORM THROWS WARNING Method getId() not found in subject class */ 

L'errore scompare solo quando lo commento esplicitamente, che ingombra davvero il mio controller.

 /* @var \MyBundle\Entity\Comment $comment */ 
     $comment = $em->getRepository(MyBundle:Comment')->findOneBy(array('id' => $id)); 

C'è un modo per documentare questo per PhpStorm nella mia classe di entità? Sto usando il plugin Symfony2 con PhpStorm 8. Grazie!

+1

https://github.com/pbyrne84/DynamicReturnTypePlugin sembrava promettente, ma penso che funzioni solo su metodi statici e non penso che possa analizzare correttamente l'alias 'MyBundle:' namespace. –

risposta

5

Ho lo stesso problema con il plugin Symfony2, questo non è forse una bella soluzione, ma funziona

/** @var EntityManager $em */ 
$em = $this->doctrine->getManager(); 
+0

Grazie! Questo è meglio che fare commenti su ogni entità. – Acyra

+0

Prego :) – felipep

1

il problema dovrebbe essere risolto, ora. c'era un problema su più implementazioni getRepository di classi proxy nella cartella cache. basta aggiornare a> = 0.11.81

7

Ho avuto questo problema. Magicamente risolto cancellando i metadati dottrina:

php app/console doctrine:cache:clear-metadata 

EDIT: In GitHub reposiory del plugin symfony v'è una breve descrizione su cosa fare quando questo problema si verifica:

https://github.com/Haehnchen/idea-php-symfony2-plugin

Il completamento automatico (o qualcos'altro) non funziona! Aiuto!

[...]

Molte funzioni richiedono il file app/cache/dev/appDevDebugProjectContainer.xml di esistere. È generato quando si avvia l'app in ambiente dev (apri /app_dev.php in un browser o in una app/console php).

Poiché il mio server è remoto, la sincronizzazione manuale del file app/cache/dev/appDevDebugProjectContainer.xml ha risolto il problema.

Quando stavo lavorando su un server locale, invece, il comando che ho scritto sopra mi ha aiutato a fare di nuovo il completamento automatico.

+0

+1, ha funzionato per me. Precisamente, per Symfony 3: php bin/console doctrine: cache: clear-metadata – userfuser

Problemi correlati