我有一个学说更新的问题。添加新表时,表名默认为类名(大写)'类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 { }
这样可以确保在不同文件系统上的模式更新期间没有任何问题。