2012-02-22 40 views
0

你好,這是我第一次做doctrin22,但我不能讓它工作,學說ORM:架構工具:創建 - 類錯誤不存在

這裏是我的代碼

的index.php

<?php 
if (getenv('APPLICATION_ENV')) { 
    define('APPLICATION_ENV', getenv('APPLICATION_ENV')); 
} else { 
    define('APPLICATION_ENV', 'production'); 
} 

require_once 'Doctrine/Common/ClassLoader.php'; 

$classLoader = new \Doctrine\Common\ClassLoader('Doctrine'); 
$classLoader->register(); 

$config = new Doctrine\ORM\Configuration(); // (2) 

// Proxy Configuration (3) 
$config->setProxyDir(__DIR__.'/lib/MyProject/Proxies'); 
$config->setProxyNamespace('MyProject\Proxies'); 
$config->setAutoGenerateProxyClasses((APPLICATION_ENV == "development")); 

// Mapping Configuration (4) 
$driverImpl = new Doctrine\ORM\Mapping\Driver\XmlDriver(__DIR__."/config/mappings/xml"); 
$config->setMetadataDriverImpl($driverImpl); 


// Caching Configuration (5) 
if (APPLICATION_ENV == "development") { 
    $cache = new \Doctrine\Common\Cache\ArrayCache(); 
} else { 
    $cache = new \Doctrine\Common\Cache\ApcCache(); 
} 
$config->setMetadataCacheImpl($cache); 
$config->setQueryCacheImpl($cache); 

// database configuration parameters (6) 
$conn = array(
    'driver' => 'pdo_sqlite', 
    'path' => __DIR__ . '/db.sqlite', 
); 

// obtaining the entity manager (7) 
$evm = new Doctrine\Common\EventManager(); 
$entityManager = \Doctrine\ORM\EntityManager::create($conn, $config, $evm); 
?> 

CLI-config.php文件

<?php 
require_once 'index.php'; 
$helperSet = new \Symfony\Component\Console\Helper\HelperSet(array(
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($entityManager) 
)); 
?> 

和我的文件夾結構

myproject/index.php 
myproject/cli-config.php 
myproject/config/mappings/xml/Bug.dcm.xml 
myproject/config/mappings/xml/Product.dcm.xml 
myproject/config/mappings/xml/User.dcm.xml 

當我運行 的myproject /學說ORM:架構工具:創建自卸SQL

我得到以下

doctrine orm:schema-tool:create --dump-sql 
PHP Warning: class_parents(): Class Bug does not exist and could not be loaded in /usr/local/zend/share/pear/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 40 
PHP Stack trace: 
PHP 1. {main}() /usr/local/zend/bin/doctrine:0 
PHP 2. include() /usr/local/zend/bin/doctrine:4 
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
PHP 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
PHP 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
PHP 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
PHP 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
PHP 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
PHP 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
PHP 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
PHP 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 
PHP 12. Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:231 
PHP 13. class_parents() /usr/local/zend/share/pear/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:40 

Warning: class_parents(): Class Bug does not exist and could not be loaded in /usr/local/zend/share/pear/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php on line 40 

Call Stack: 
    0.0001  625400 1. {main}() /usr/local/zend/bin/doctrine:0 
    0.0002  639440 2. include('/usr/local/zend/bin/doctrine.php') /usr/local/zend/bin/doctrine:4 
    0.0086 4245576 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
    0.0151 6311808 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
    0.0164 6761376 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
    0.0169 6761544 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
    0.0171 6761920 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
    0.0171 6761920 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
    0.0172 6764016 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
    0.0172 6764064 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
    0.0172 6764280 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 
    0.0173 6799712 12. Doctrine\Common\Persistence\Mapping\RuntimeReflectionService->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:231 
    0.0173 6799760 13. class_parents() /usr/local/zend/share/pear/Doctrine/Common/Persistence/Mapping/RuntimeReflectionService.php:40 

PHP Warning: array_reverse() expects parameter 1 to be array, boolean given in /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 231 
PHP Stack trace: 
PHP 1. {main}() /usr/local/zend/bin/doctrine:0 
PHP 2. include() /usr/local/zend/bin/doctrine:4 
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
PHP 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
PHP 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
PHP 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
PHP 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
PHP 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
PHP 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
PHP 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
PHP 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 
PHP 12. array_reverse() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:231 

Warning: array_reverse() expects parameter 1 to be array, boolean given in /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 231 

Call Stack: 
    0.0001  625400 1. {main}() /usr/local/zend/bin/doctrine:0 
    0.0002  639440 2. include('/usr/local/zend/bin/doctrine.php') /usr/local/zend/bin/doctrine:4 
    0.0086 4245576 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
    0.0151 6311808 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
    0.0164 6761376 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
    0.0169 6761544 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
    0.0171 6761920 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
    0.0171 6761920 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
    0.0172 6764016 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
    0.0172 6764064 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
    0.0172 6764280 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 
    0.0176 6799840 12. array_reverse() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:231 

PHP Warning: Invalid argument supplied for foreach() in /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 231 
PHP Stack trace: 
PHP 1. {main}() /usr/local/zend/bin/doctrine:0 
PHP 2. include() /usr/local/zend/bin/doctrine:4 
PHP 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
PHP 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
PHP 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
PHP 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
PHP 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
PHP 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
PHP 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
PHP 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
PHP 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 

Warning: Invalid argument supplied for foreach() in /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php on line 231 

Call Stack: 
    0.0001  625400 1. {main}() /usr/local/zend/bin/doctrine:0 
    0.0002  639440 2. include('/usr/local/zend/bin/doctrine.php') /usr/local/zend/bin/doctrine:4 
    0.0086 4245576 3. Doctrine\ORM\Tools\Console\ConsoleRunner::run() /usr/local/zend/bin/doctrine.php:50 
    0.0151 6311808 4. Symfony\Component\Console\Application->run() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/ConsoleRunner.php:39 
    0.0164 6761376 5. Symfony\Component\Console\Application->doRun() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:118 
    0.0169 6761544 6. Symfony\Component\Console\Command\Command->run() /usr/local/zend/share/pear/Symfony/Component/Console/Application.php:194 
    0.0171 6761920 7. Doctrine\ORM\Tools\Console\Command\SchemaTool\AbstractCommand->execute() /usr/local/zend/share/pear/Symfony/Component/Console/Command/Command.php:224 
    0.0171 6761920 8. Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Tools/Console/Command/SchemaTool/AbstractCommand.php:53 
    0.0172 6764016 9. Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:131 
    0.0172 6764064 10. Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:178 
    0.0172 6764280 11. Doctrine\ORM\Mapping\ClassMetadataFactory->getParentClasses() /usr/local/zend/share/pear/Doctrine/ORM/Mapping/ClassMetadataFactory.php:254 




[ReflectionException]  
Class Bug does not exist 



orm:schema-tool:create [--dump-sql] 
+0

你寫過你的實體類了嗎? – 2012-02-22 00:43:42

+0

你能發佈這個文件的內容:myproject/config/mappings/xml/Bug.dcm.xml – 2012-02-22 15:25:23

回答

0

既然你沒有張貼您的Bug.dcm .xml文件我無法看到你是否宣佈你的類正確。但是看着你的xml文件名,你忘了給你的Bug類添加一個名稱空間。如果你給Bug類命名空間Foo,你的文件名應該是Foo.Bug.dcm.xml。

您需要做的另一件事是將選擇的名稱空間添加到您的doctrine類加載器。就像你對Doctrine命名空間所做的一樣。我情況下,你使用的命名空間美孚它看起來就像這樣:

$classLoader = new \Doctrine\Common\ClassLoader('Foo', <<PATH_TO_FOO>>); 
$classLoader->register(); 

更換<>到您的命名空間開始的路徑。

如果這不能解決您的問題發佈您的Bug.dcm.xml。