2010-10-04 134 views
2

我使用Doctrine 1.2,想知道如何用它实现mysql表前缀。学说ORM - 前缀表

因此,例如我想我们的系统在相同的数据库上部署两次,第一个表可以前缀为“one_”,第二个可以前缀为“two_”。

任何人都知道如何做到这一点?我会想象它是一个配置设置,但我似乎无法找到它。

+0

你究竟想要做什么?使用原则在数据库中生成表格?生成两组模型? – BenV 2010-10-04 14:24:43

+0

所以像wordpress一样,默认情况下它有数据库表前缀'wp_'。在教条中拥有这样的特性将允许我在se数据库中使用两个单独安装的相同代码/系统,而传统上每个安装需要一个数据库,而不是每个安装都有一个前缀。 – balupton 2010-10-04 14:32:31

回答

3

我还没有尝试过,但..从文档:

$manager = Doctrine_Manager::getInstance(); 
$manager->setAttribute(Doctrine_Core::ATTR_TBLNAME_FORMAT, 'one_%s'); 

或者,您也可以手动在您的YAML模式中定义一个表名:

Foo: 
    tableName: one_foo 
    columns: 
    # etc. 

希望这有助于。

+0

我只是想知道,虽然..这是非常实用的,因为大概你会重建模型,这将需要删除/创建/重建你的数据库,可能很多。这意味着你每次都会丢弃两组表。看起来比创建两个数据库更困难,并为Doctrine_Manager中的每个数据库定义一个连接。 – 2010-10-04 23:33:52

+0

它的用例是只允许一个数据库的共享主机。另一个用例是CMS的演示安装,由于服务器权限的限制,不允许自动创建数据库。 – balupton 2010-10-05 08:24:47

+0

嗨。对延迟感到抱歉。很公平。所以我想你可以做的是定义两个连接(使用相同的数据库凭证等),然后使用Doctrine_Manager按名称获取每个实例...然后为每个实例设置所需的表名格式,如上所述?没有时间检查它是否会立即飞行,但它应该可以工作。 – 2010-10-07 09:16:18

0

如果您有一个域的UML模型,您可以使用UML to Doctrine online service来生成对应的Doctrine脚本的不同版本,每个版本都有不同的表格前缀(选择前缀是您可以更改的配置选项之一作为生成过程的一部分)