3

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

CREATE TABLE user2 LIKE user;

并且表 user 和 user2 将是相同的。这可以在教义中完成吗?

4

3 回答 3

1

我想您正在寻找的是在生成模型时继承的模式级别上定义(让我们使用您的示例)。您可以通过使用文档中描述的学说的具体继承来做到这一点。user2user

所以,在你的schema.yml

User:
  columns:
    name: string

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

这种方式user2将是一个单独的表,并且包含与之前在user. 我不确定您为什么想要两个相同的表,但使用上述方法绝对可以做到这一点。

于 2009-11-04T20:17:44.593 回答
0

我想不是。:(

您可以从模板创建表格,例如http://www.doctrine-project.org/documentation/cookbook/1_1/en/plug-and-play-schema-information-with-templates或使用 Doctrine_RawSql。

于 2009-11-04T23:14:39.187 回答
0

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

  $copy = $user->copy();

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

获取没有关系的用户副本

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

于 2010-02-11T11:41:23.667 回答