如何在控制器中创建表

如何在控制器中创建表

本文介绍了Symfony2学说实体:如何在控制器中创建表?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一些功能来动态创建数据库表。
的算法是:
1)注册新用户->在数据库中创建记录(这很简单)
2)注册后创建类似 user_data_abcdef123456的表... ,其中 abcdef123456 -是随机预先生成的哈希。该表必须由(例如)现有的默认实体(user_data_)
实体创建:

I need some functionality for dynamic creation table in DB.Algorithm is:1) register new user -> make record in DB (this is simple)2) after registration create table like user_data_abcdef123456... where abcdef123456 - is random pregenerated hash. this table must created from (for example) existing default entity (user_data_)Entity:

Path\To\Entity\UserData:
    type: entity
    table: user_data_
....


Controller中的

像这样:

in Controller do like this:

$doctrine = $this->getDoctrine();

/** @var AbstractSchemaManager $manager */
$manager = $doctrine->getConnection()->getSchemaManager();
/** @var ClassMetadata $metadata */
$metadata = $doctrine->getManager()->getClassMetadata($class);
$metadata->setPrimaryTable(array('name' => $metadata->getTableName() . $project));

$table = new Table($metadata->getTableName());
$manager->createTable($table);

我需要设置所有列,所有索引。等等。

and I need set all column, all index.. etc.

有正确的解决方案吗?

推荐答案

万岁!我找到了解决方案!感谢 trevorengstrom -all-the-database-tables> Doctrine自动创建所有数据库表答案。
解决方案是:

Hooray! I found solution! Thanks for trevorengstrom in Doctrine automatically create all the database tables answer.The solution is:

    $doctrine = $this->getDoctrine();

    /** @var ObjectManager|EntityManagerInterface $manager */
    $manager = $doctrine->getManager();

    /** @var ClassMetadata $metadata */
    $metadata = $manager->getClassMetadata($class);
    $metadata->setPrimaryTable(array('name' => $metadata->getTableName() . $project));

    $schemaTool = new SchemaTool($manager);
    $schemaTool->createSchema(array($metadata));

其中 $ class ='DemoBundle:UserData' $ project ='abcdef123456 ...';

这篇关于Symfony2学说实体:如何在控制器中创建表?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-26 13:45