【问题标题】:Symfony2 - doctrine get tables creation orderSymfony2 - 学说获取表创建顺序
【发布时间】:2015-08-18 01:36:13
【问题描述】:

我正在使用 Symfony 2.7、学说 2、MySQL。 我正在尝试在发布时检索控制器中的表创建顺序

php 应用程序/控制台原则:generate:schema --dump-sql

但我只需要表名。 因此,例如,如果我有两个表,例如 产品 - 类别 我想要一个如下所示的输出:array('Category', 'Product')

使用this documentation 这是我目前所做的:

public function getTablesCreationOrderAction()
{
    $conn = $this->get('database_connection');
    $sm = $conn->getSchemaManager();
    $sequences = $sm->listSequences($this->getParameter('database_name'));
    die();
}

$sequences = $sm->listSequences 处引发异常。

这是我得到的例外:

平台不支持“Doctrine\DBAL\Platforms\AbstractPlatform::getListSequencesSQL”操作。

不知道是不是MySQL不支持该操作。

谢谢!

【问题讨论】:

    标签: php mysql symfony doctrine-orm


    【解决方案1】:

    是的,但似乎该功能尚未实现,因为这是在 AbstractPlatform 的源代码中,您将看到:

    public function getListSequencesSQL($database)
    {
        throw DBALException::notSupported(__METHOD__);
    }
    

    现在这意味着覆盖 AbstractPlatform 的平台必须覆盖这些函数才能提供正确的实现。
    现在如果你看一下MySqlPlatform,你将无法在任何地方找到getListSequencesSQL(),因此你不能将这个功能与mysql一起使用,或者至少它没有实现。

    【讨论】:

    • 好的,谢谢。你知道是否有另一种方法来实现我正在寻找的东西?
    【解决方案2】:

    对于那些感兴趣的人,这就是我的做法。可能有更好的方法..

    public function getTablesCreationOrderAction()
    {
        $app = New Application($this->get('kernel'));
        $app->setAutoExit(false);
    
        $input = New ArrayInput(['command' => 'doctrine:schema:create',
                                 '--dump-sql'=>true]);
        $output = New BufferedOutput();
    
        $app->run($input, $output);
        $rst = $output->fetch();
    
        $schema = explode('CREATE TABLE ', $rst);
    
        $tables = [];
        foreach ($schema as $tableDef)
        {
            $tables[] = explode(' (', $tableDef)[0];
        }
    
        unset($tables[0]); // empty
        var_dump($tables);
        die();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 1970-01-01
      • 2013-04-20
      • 2012-10-08
      • 2012-03-11
      相关资源
      最近更新 更多