douhan6738 2015-08-09 12:21
浏览 40
已采纳

Symfony2 - doctrine获取表创建顺序

I am using Symfony 2.7, doctrine 2, MySQL. I'm trying to retrieve the tables creation order in a controller as when issuing

php app/console doctrine:generate:schema --dump-sql

but I only need the table names. So, for instance, if I have two tables like Product - Category I'd like to have an output which looks like this : array('Category', 'Product')

Using this documentation here's what I've done so far:

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

An exception is thrown at $sequences = $sm->listSequences.

Here's the exception I get:

Operation 'Doctrine\DBAL\Platforms\AbstractPlatform::getListSequencesSQL' is not supported by platform.

I don't know if this means that MySQL does not support the operation.

Thanks!

  • 写回答

2条回答 默认 最新

  • duanchangnie7996 2015-08-17 17:36
    关注

    For those interested, here's how I did it. There may be better ways..

    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();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误