一些背景信息:我正在努力将Doctrine集成到CodeIgniter应用程序中。我有它的工作,但我希望能够从浏览器运行Doctrine命令行(CLI)任务,即不能从命令行脚本运行。
我之所以这样做是因为我将在共享主机软件包上运行Doctrine和CodeIgniter,我将无法访问命令行。
这似乎是一个非常基本的功能,但在Doctrine 2中并不容易获得。
我的最后努力将进入命令行工具并确定如何执行任务,然后在CodeIgniter控制器中复制该代码。
如果有更简单的方法,请告诉我。
谢谢!
Unanswered duplicate发布了一段时间。
答案 0 :(得分:1)
以下
$doctrine = \Zend_Registry::get('doctrine');
$em = $doctrine->getEntityManager();
$tool = new \Doctrine\ORM\Tools\SchemaTool($em);
获取SQL以更新当前架构:
$sqlArray = $tool->getUpdateSchemaSql($em->getMetadataFactory()->getAllMetadata());
使用当前元数据
更新架构$res = $tool->updateSchema($em->getMetadataFactory()->getAllMetadata());
创建架构。
$res = $tool->createSchema($em->getMetadataFactory()->getAllMetadata());
这属于安装脚本。只需创建并验证数据库连接
$conn = $doctrine->getConnection();
$sql = "SELECT * FROM users";
try {
$stmt = $conn->query($sql); // Simple (too simple?)
die('Already installed');
} catch (Exception $e) {
// Table not found, continue
}
然后创建您的架构。
答案 1 :(得分:0)
您可能不希望在没有命令行的情况下尝试运行命令行工具。
但是,您可以非常简单地在脚本中自己完成。例如,如果您想要执行orm:schema-tool:*,那么您需要start here