का उपयोग करना चाहिए, मुझे इकाई फ़ाइलों में एनोटेशन रजिस्ट्री तक पहुंचने के लिए \Doctrine\Common\Annotations\AnnotationRegistry::registerFile
का उपयोग करना होगा।cli के साथ doctrine2 autloader एनोटेशन रजिस्ट्री
इस भाग को ड्राइवर श्रृंखला का उपयोग करने और ओआरएम का उपयोग करने की आवश्यकता है: स्कीमा-टूल: निर्माता। लेकिन मैं AnnotationRegistry::registerFile
जोड़कर मुझे आवश्यक प्रत्येक वर्ग को जोड़ नहीं सकता।
यह समस्या तब देखी गई जब मैं अपने डॉक्टर 2.2.2 में गेडमो जोड़ना चाहता हूं।
// cli-config.php
// if comment this like an error will appear
// \Doctrine\Common\Annotations\AnnotationRegistry::registerFile(__DIR__ . '/../library/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
// cache
$cache = new \Doctrine\Common\Cache\ArrayCache();
// annotation reader
$annotationReader = new \Doctrine\Common\Annotations\AnnotationReader();
// cached annotation reader
$cachedAnnotationReader = new \Doctrine\Common\Annotations\CachedReader($annotationReader, $cache);
// driver chain
$driverChain = new \Doctrine\ORM\Mapping\Driver\DriverChain();
// annotation driver
$annotationDriver = new \Doctrine\ORM\Mapping\Driver\AnnotationDriver($cachedAnnotationReader, array(SCHEMA_PATH));
// add entity namespaces
$driverChain->addDriver($annotationDriver, 'Entity');
// configuration
$config = new \Doctrine\ORM\Configuration();
$config->setMetadataCacheImpl($cache);
$config->setMetadataDriverImpl($driverChain);
$config->setQueryCacheImpl($cache);
$config->setProxyDir(PROXY_PATH);
$config->setProxyNamespace('Proxies');
$config->setAutoGenerateProxyClasses(true);
// entity manager
$entityManager = \Doctrine\ORM\EntityManager::create($connectionOptions, $config);
// helper set
$helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($entityManager->getConnection()),
'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($entityManager)
));
// return
return $helperSet;
और मेरी इकाई फ़ाइल इसे यहाँ
namespace Entity;
use \Doctrine\Common\Collections\ArrayCollection;
use \Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="users")
*/
class User
{
/**
* @ORM\Id
* @ORM\Column(columnDefinition="INT unsigned NOT NULL")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string",length=32)
*/
protected $name;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->_id = $id;
return $this;
}
public function getName()
{
return $this->id;
}
public function setName($name)
{
$this->_id = $name;
return $this;
}
}
त्रुटि है है:
[Doctrine\Common\Annotations\AnnotationException]
[Semantical Error] The annotation "@\Doctrine\ORM\Mapping\Entity" in class Entity\User does not exist, or could not be auto-loaded.
यदि आप एक _Symfony 2 कंसोल अनुप्रयोग_ विकसित कर रहे हैं, तो आप इस स्निपेट को इस तरीके से समझाएं [http://stackoverflow.com/a/13461155): http://stackoverflow.com/a/ 13461155 – xsubira