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


how to deal with doctrine updates on case insensitive file systems(?)

我有一个学说更新的问题。添加新表时,表名默认为类名(大写)'类Foo',表创建'Foo'。如果您更改Foo,例如添加或删除属性,在更新时,表将被重命名为' Foo '。

这个问题有一个bug: http://www.doctrine-project.org/jira/browse/DBAL-598

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

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

在实体定义中用小写字母定义表名,例如:

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 { }

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