【发布时间】:2016-02-15 03:54:08
【问题描述】:
我创建了一个系统来生成和管理数据库。这个想法很简单:用户将能够定义表、它们的结构,当然还可以添加/编辑/删除所有数据。这个动态对象应该在网站级别上完全配置,而不是在代码中。假设我从用户那里获得了所有必要的信息(它是通过表单发送的),现在我想生成新的 Doctrine 对象并在数据库中创建表。有没有办法做到这一点?
【问题讨论】:
标签: php symfony doctrine-orm
我创建了一个系统来生成和管理数据库。这个想法很简单:用户将能够定义表、它们的结构,当然还可以添加/编辑/删除所有数据。这个动态对象应该在网站级别上完全配置,而不是在代码中。假设我从用户那里获得了所有必要的信息(它是通过表单发送的),现在我想生成新的 Doctrine 对象并在数据库中创建表。有没有办法做到这一点?
【问题讨论】:
标签: php symfony doctrine-orm
这是你需要的:
$sm = $conn->getSchemaManager();
$schema = $sm->createSchema();
$newSchema = clone $schema;
$table = $newSchema->createTable("my_table");
$table->addColumn("id", "integer", array("unsigned" => true));
$table->addColumn("username", "string", array("length" => 32));
$table->setPrimaryKey(array("id"));
$table->addUniqueIndex(array("username"));
$sql = $schema->getMigrateToSql($newSchema, $conn->getDatabasePlatform());
然后执行你的新sql
$conn->exec( $sql );
附: conn 是 DBAL connection 的实例。查看here了解更多信息。
【讨论】: