我对教条更新有疑问。当添加新表时,表名默认为类名(大写)&f 39;类Foo',创建的表是' Foo'。如果您更改Foo,例如添加或删除属性,则在更新时,该表将重命名为“foo'。
针对此问题提出了错误:http://www.doctrine-project.org/jira/browse/DBAL-598
问题是当我将数据库导出并发布到基于linux的系统时(从mac-os导出时),我必须手动编辑导出文件以修复数据库表。
具体来说,我的问题是,是否有人提出了一种合理自动化的清理表名的方法?
答案 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 { }
这样,您可以确保在不同文件系统上的架构更新期间没有任何问题。