如何在Symfony控制器中保存doctrine数据库模式?

时间:2014-06-02 12:49:52

标签: database symfony controller doctrine actionmethod

我使用Symfony 2.3和Doctrine 2,我需要用户将Doctrine数据库的模式保存到文件(* .sql)。我需要它进入一个动作方法,然后将文件发送给用户

2 个答案:

答案 0 :(得分:1)

您需要执行以下命令:

.app/console doctrine:schema:create --dump-sql >schema.sql

以下是如何从Command运行Controller的答案:How can I run symfony 2 run command from controller

答案 1 :(得分:1)

为了让你开始,这应该在概念上起作用。我无法运行它,因此我认为可能需要从您身边进行一些调整。

<?php
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\NullOutput;
use Doctrine\Bundle\DoctrineBundle\Command\Proxy\CreateSchemaDoctrineCommand;

// your controller

public function myAction()
{
    $command = new CreateSchemaDoctrineCommand();
    $command->setContainer($this->container);
    $input = new ArrayInput(array('--dump-sql' => true));
    $output = new NullOutput();
    $schema = $command->run($input, $output); //This is your schema

    // Write it to a file if you want
    file_put_contents('path/to/schema.sql', $schema);
}

<强>参考文献: