使用doctrine2在查询中创建新列

时间:2013-08-17 15:25:18

标签: symfony database-design doctrine-orm doctrine symfony-2.1

我正在使用doctrine2处理symfony2项目,我有一个问题,即为连接到表单的用户创建一个新按钮,在数据库中添加10个当前10个值和10个列的新字段:

这意味着当用户单击“添加新”按钮以便他可以添加一个具有XV值的字段X并在数据库中创建一个colomun“X”,然后第二个字段Y与YV ...直到10。 XV和YV也是相同类型的字段,例如“decimal”。

使用ajax在表单中添加新字段没有问题,但我的问题是:

1-如何使用doctrine2在DB的表中创建新列并插入值?

2-如何在创建新列的同时更新自动更新类实体和类表单?

1 个答案:

答案 0 :(得分:1)

首先,我必须承认我不理解你想要完全实现的目标。但我几乎是肯定的,你的设计中存在概念上的错误。

您必须区分以下两个概念:

  • DML (数据操作语言),例如数据库中的INSERT,UPDATE或DELETE数据,这意味着您创建了新记录(INSERT)。
  • DDL (数据定义语言),例如CREATE TABLE(用于创建新的数据库关系)或ALTER TABLE(用于向数据库添加新列)。

您正在尝试使用 DDL (根据您的描述使用ALTER TABLE语句)向您的数据库中动态添加新列,这是无效的,根本不是好的做法。 你应该有一个非常好的理由这样做(例如,如果您正在构建的系统是数据库管理工具或类似的东西......)。

我强烈建议您完全重新思考并重新设计您的架构并使用DML 来实现您的目标。我确信您的问题可以通过设计灵活的数据结构而不是添加新列,但在动态数据库中插入新记录来解决。

重新设计数据库结构后,使用Symfony和Doctrine实现任务非常容易。