如何处理不区分大小写的文件系统的学说更新(?)

时间:2014-05-12 20:01:20

标签: php doctrine-orm

我对教条更新有疑问。当添加新表时,表名默认为类名(大写)&f 39;类Foo',创建的表是' Foo'。如果您更改Foo,例如添加或删除属性,则在更新时,该表将重命名为“foo'。

针对此问题提出了错误:http://www.doctrine-project.org/jira/browse/DBAL-598

问题是当我将数据库导出并发布到基于linux的系统时(从mac-os导出时),我必须手动编辑导出文件以修复数据库表。

具体来说,我的问题是,是否有人提出了一种合理自动化的清理表名的方法?

1 个答案:

答案 0 :(得分:1)

只需在实体定义中以小写形式定义表名,例如:

<强> YAML:

# Doctrine.Tests.ORM.Mapping.User.dcm.yml
Doctrine\Tests\ORM\Mapping\User:
    type: entity
    table: cms_users

<强> XML:

// Doctrine.Tests.ORM.Mapping.User.dcm.xml
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                          http://www.doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name="Doctrine\Tests\ORM\Mapping\User" table="cms_users">

<强>注释:

<?php
/**
 * @Entity
 * @Table(name="user")
 */
class User { }

这样,您可以确保在不同文件系统上的架构更新期间没有任何问题。