Ben açıkça AnnotationDriver :: getAllClassNames çağrı sürece Doktrini çalışmıyor

0 Cevap php

Ben ilk kez Doktrini ORM kullanmak çalışılıyor, ve ben configuration found here takip ediyorum.

Bu adımları izleyerek doğrudan aşağıdaki hatası:

Warning: class_parents() [function.class-parents]: Class MyProject\Model\User does not exist and could not be loaded in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 222

Warning: array_reverse() expects parameter 1 to be array, boolean given in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 222

Warning: Invalid argument supplied for foreach() in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 222

Fatal error: Uncaught exception 'ReflectionException' with message 'Class MyProject\Model\User does not exist' in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php:67

Iz Stack:

#0 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php(67): ReflectionClass->__construct('MyProject\Model...')

#1 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(350): Doctrine\ORM\Mapping\ClassMetadata->__construct('MyProject\Model...')

#2 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(260): Doctrine\ORM\Mapping\ClassMetadataFactory->newClassMetadataInstance('MyProject\Model...')

#3 /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadataFactory.php(169): Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata('MyProject\Model...')

#4 /opt/local/lib/php/Doctrine/ORM/EntityManager.php(247): Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor('MyProject\Model...')

#5 /opt/local/lib/php/Doctrine/ORM/EntityManager.php(563): Doctrine\ORM\EntityManager->getClassMetadata('MyProject\Model...')

#6 /opt in /opt/local/lib/php/Doctrine/ORM/Mapping/ClassMetadata.php on line 67

Bu hata uzağa gider ve örnek kod, (aşağıda açıklama ile gösterilir) aşağıdaki satırı eklerseniz kod mükemmel çalışıyor:

$driverImpl = $config->newDefaultAnnotationDriver('/path/to/lib/MyProject/Entities');
$driverImpl->getAllClassNames();  // **MY ADDED LINE**
$config->setMetadataDriverImpl($driverImpl);

Bu çağrı örnek kod işe almak için gerekli olan söz hiçbir şey yoktur; o benim hata nerede oluştuğunu görmek için çalışırken ekrana biraz bilgi yankılanan ederken rastlarsanız oldu bir şeydi.

Bu çağrı gereklidir (ve neden örnek kodda belirtildiği değil) bir nedeni var mı? Benim özgün hata kök nedenidir yerine aranmalıdır başka bir şey var mı?

(Gerektiği gibi ben bunu Doktrini kullanarak benim ilk kez bu yana bu soliving en yararlı olanı sadece pozitif değilim, daha fazla kod gönderebilirsiniz.)

EDIT: Ben hata aslında oluştuğu çizgi belirtmeyi ihmal:

$user = $em->find('MyProject\Model\User', 1);

0 Cevap