Doctrine:混合YAML标记和数据库管理器(navicat)编辑?

时间:2010-04-11 22:48:18

标签: inheritance doctrine

我认为这个问题的答案应该是:不。但我希望得到纠正。

我想使用 YAML标记+ Doctrine createTables() Navicat编辑的混合编辑我们的数据库。我可以保留标记的继承吗?

示例(4个步骤,在步骤4,Doctrine无法重新创建继承模式......或者是吗?):

第1步:使用继承创建YAML

---
Entity:
  columns:
    username: string(20)
    password: string(16)
    created_at: timestamp
    updated_at: timestamp

User:
  inheritance:
    extends: Entity
    type: column_aggregation
    keyField: type
    keyValue: 1

Group:
  inheritance:
    extends: Entity
    type: column_aggregation
    keyField: type
    keyValue: 2

第2步:使用Doctrine创建表(如果是nessecary则删除/创建db)

创建了sql:

CREATE TABLE entity (id BIGINT AUTO_INCREMENT, 
username VARCHAR(20), 
password VARCHAR(16), 
created_at DATETIME, 
updated_at DATETIME, 
type VARCHAR(255), 
PRIMARY KEY(id)) ENGINE = INNODB

第3步:使用Navicat编辑表格 第4步:由于“外部”编辑而刷新YAML文件...

1 个答案:

答案 0 :(得分:1)

不幸的是,你是对的。

Doctrine继承对数据库模式没有影响,因此您将无法从sql转储重新创建继承yaml。它只更改Doctrine模型文件,在您的情况下,这基本上意味着User和Group类继承自Entity类。 (在列聚合继承的情况下,它还添加了一个“类型”列,其中包含类名)。

很抱歉,如果我的答案不是很清楚......:)

更多信息here