Doctrine ORM:像另一个创建表

时间:2009-11-04 16:56:50

标签: php mysql orm doctrine

使用Doctrine时,有没有办法像另一个一样创建表?我知道在MySQL中有一个函数可以这样做:

CREATE TABLE user2 LIKE user;

表user和user2将完全相同。这可以在Doctrine中完成吗?

3 个答案:

答案 0 :(得分:1)

我想你正在寻找的是定义(让我们使用你的例子)在架构级user2在生成模型时从user继承。您可以使用doctrine的具体继承is described in the documentation来完成此操作。

所以,在你的schema.yml

User:
  columns:
    name: string

User2:
  inheritance:
    extends: User
    type: concrete
  columns:
    something: int

这种方式user2将是一个单独的表,并包含与先前在user中定义的相同的列(“名称”)。我不确定你为什么要两个相同的表,但使用上述方法绝对可以。

答案 1 :(得分:0)

我认为不是。 :(

您可以在此处http://www.doctrine-project.org/documentation/cookbook/1_1/en/plug-and-play-schema-information-with-templates创建表格,也可以使用Doctrine_RawSql。

答案 2 :(得分:0)

Doctrine提供了一个简单的方法:Doctrine_Record :: copy()。

  $copy = $user->copy();

请注意,使用copy()复制记录会返回带有的新记录(状态TDIRTY) 旧记录的值,它复制该记录的关系。如果你不想复制 关系也是如此,你需要使用copy(false)。

获取没有关系的用户副本

$ copy = $ user-> copy(false);