使用Doctrine时,有没有办法像另一个一样创建表?我知道在MySQL中有一个函数可以这样做:
CREATE TABLE user2 LIKE user;
表user和user2将完全相同。这可以在Doctrine中完成吗?
答案 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);