0

我剛剛設置了一個ZF2項目,並將其全部配置爲Doctrine2而沒有問題。它工作,只是給我一個錯誤,因爲它無法找到我想查詢的數據庫表。「em沒有定義錯誤」當試圖運行教條命令

實體還設置正確,都按照http://www.jasongrimes.org/2012/01/using-doctrine-2-in-zend-framework-2/

所以想用CLI創建表等,但在運行任何CLI命令時,我得到

[InvalidArgumentException]  
The helper "em" is not defined. 

命令我使用

php doctrine.php orm:schema-tool:update --dump-sql 

正在運行文件夾doctrine.php

/Library/WebServer/Documents/zf2-Skel-NewProj1/vendor/bin 

現在,如果我爲我的ZF1.11項目之一使用CLI,它可以正常工作。

爲了得到這個工作,我必須編輯位於下這個文件的

/Library/WebServer/Documents/zf2-Skel-NewProj1/vendor/doctrine/orm/tools 

內容的CLI-config.php文件是:

<?php 

require_once '../../lib/vendor/doctrine-common/lib/Doctrine/Common/ClassLoader.php'; 

$classLoader = new \Doctrine\Common\ClassLoader('Doctrine\ORM', realpath(__DIR__ . '/../../lib')); 
$classLoader->register(); 
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine\DBAL', realpath(__DIR__ . '/../../lib/vendor/doctrine-dbal/lib')); 
$classLoader->register(); 
$classLoader = new \Doctrine\Common\ClassLoader('Doctrine\Common', realpath(__DIR__ . '/../../lib/vendor/doctrine-common/lib')); 
$classLoader->register(); 
$classLoader = new \Doctrine\Common\ClassLoader('Symfony', realpath(__DIR__ . '/../../lib/vendor')); 
$classLoader->register(); 
$classLoader = new \Doctrine\Common\ClassLoader('Entities', __DIR__); 
$classLoader->register(); 
$classLoader = new \Doctrine\Common\ClassLoader('Proxies', __DIR__); 
$classLoader->register(); 

$config = new \Doctrine\ORM\Configuration(); 
$config->setMetadataCacheImpl(new \Doctrine\Common\Cache\ArrayCache); 
$driverImpl = $config->newDefaultAnnotationDriver(array(__DIR__."/Entities")); 
$config->setMetadataDriverImpl($driverImpl); 

$config->setProxyDir(__DIR__ . '/Proxies'); 
$config->setProxyNamespace('Proxies'); 

$connectionOptions = array(
'driver' => 'pdo_sqlite', 
'path' => 'database.sqlite' 
); 

$em = \Doctrine\ORM\EntityManager::create($connectionOptions, $config); 

$helpers = new Symfony\Component\Console\Helper\HelperSet(array(
    'db' => new \Doctrine\DBAL\Tools\Console\Helper\ConnectionHelper($em->getConnection()), 
    'em' => new \Doctrine\ORM\Tools\Console\Helper\EntityManagerHelper($em) 
)); 

回答

6

嘗試:

供應商\ bin \ doctrine-module orm:schema-tool:update --dump-sql

+0

php doctrine-module orm:schema-tool:update --dump-sql工作。尼斯會盡管它會匹配舊的ZF1運行它的方式。 非常感謝Zdenek。 –

相關問題