我正在从学说中遵循有关如何与Codeigniter集成的教程。
在某些时候,教程要求我创建一个cli-config.php文件。
我确实在我的Codeigniter根文件夹上创建了它。
在该文件中,我添加了以下代码:
<?php
use DoctrineORMToolsConsoleConsoleRunner;
// replace with file to your own project bootstrap
require_once 'index.php'; // <------- what should i add here?
// replace with mechanism to retrieve EntityManager in your app
$entityManager = GetEntityManager();
return ConsoleRunner::createHelperSet($entityManager);
我不确定他们对"您自己的项目bootstrap"的含义。我以为他们是在谈论CodeGiniter的中心部分的index.php。
通过命令行,位于Codeigniter root文件夹(我安装了作曲家),我做了" php供应商/bin/doctrine",但我遇到了此错误。
<div id="container">
<h1>A Database Error Occurred</h1>
<p>Unable to connect to your database server using the provided settings.</p><p>Filename: core/Loader.php</p><p>Line Number: 346</p> </div>
我感到迷路了。有人可以帮我吗?
编辑:对于我可以从应用程序访问Doctrine EntityManager的方式,一切似乎都可以使用。
我只是不知道我是否通过从CodeIgniter中引用我的Central应用程序index.php来正确设置控制台应用程序。
我没有使用CI的学说控制台组件,而是使用ZF1。但是我认为配置步骤是相同的。
- require_once'index.php'意味着您应该进行框架初始化,包括配置,模块,路线,服务(包括数据库)等的加载。-在客户端应用程序中所需的所有内容。
- 从步骤1开始的设置初始化学说。
- 配置命令
- 运行控制台应用程序
代码样本
$application->bootstrap('doctrine2');
$configurationOptions = $application->getBootstrap()->getOptions();
$emArr = $application->getBootstrap()->getResource('doctrine2');
$em = $emArr['default'];
$symfonyPath = $configurationOptions['resources']['doctrine2']['lib_dir'];
$symfonyPath .= '/Doctrine';
$classLoader = new DoctrineCommonClassLoader('Symfony', $symfonyPath);
$classLoader->register();
$cli = new SymfonyComponentConsoleApplication('Doctrine Command Line Interface', DoctrineORMVersion::VERSION);
$helperSet = $cli->getHelperSet();
$helperSet->set(new DoctrineDBALToolsConsoleHelperConnectionHelper($em->getConnection()), 'db');
$helperSet->set(new DoctrineORMToolsConsoleHelperEntityManagerHelper($em), 'em');
$cli->setHelperSet($helperSet);
$cli->setCatchExceptions(true);
$cli->addCommands(array(
// DBAL Commands
new DoctrineDBALToolsConsoleCommandRunSqlCommand(),
new DoctrineDBALToolsConsoleCommandImportCommand(),
...
));
$cli->run();