运行Doctrine 2 CLI工具从浏览器运行的脚本中的任务

时间:2011-05-24 15:16:11

标签: doctrine doctrine-orm php

一些背景信息:我正在努力将Doctrine集成到CodeIgniter应用程序中。我有它的工作,但我希望能够从浏览器运行Doctrine命令行(CLI)任务,即不能从命令行脚本运行。

我之所以这样做是因为我将在共享主机软件包上运行Doctrine和CodeIgniter,我将无法访问命令行。

这似乎是一个非常基本的功能,但在Doctrine 2中并不容易获得。

我的最后努力将进入命令行工具并确定如何执行任务,然后在CodeIgniter控制器中复制该代码。

如果有更简单的方法,请告诉我。

谢谢!

Unanswered duplicate发布了一段时间。

2 个答案:

答案 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