是否可以使用yaml映射Gedmo?我在我的项目中使用yaml文件,我想使用从教条扩展中翻译但我有问题。
我有类似的东西(一个实体/一个翻译表):
class CategoryTranslation extends \Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation
{
/**
* All required columns are mapped through inherited superclass
*/
}
但是,当我运行“doctrine:schema:update --dump-sql”命令时,我遇到了一个错误:
表'category_translation'上没有名称为'locale'的列。
我感觉yaml映射“看不到”Gedmo AbstractTranslation类......
你对这个问题有所了解吗? 谢谢!
编辑:
为了避免在评论中进行讨论,我发布了一个答案。
MyProject\MyBundle\Entity\Category:
type: entity
table: category
repositoryClass: MyProject\MyBundle\Repository\CategoryRepository
gedmo:
tree:
type: nested
translation:
locale: locale
entity: MyProject\MyBundle\Entity\Translation\CategoryTranslation
fields:
label:
type: string
length: 255
gedmo:
- translatable
使用此配置,我必须创建一个Translation.CategoryTranslation.orm.yml文件,因为没有数据库迁移。并且,问题确实在这里:
MyProject\MyBundle\Entity\Translation\CategoryTranslation:
type: entity
table: category_translation
repositoryClass: Gedmo\Translatable\Entity\Repository\TranslationRepository
indexes:
category_translation_idx:
columns: [ locale, object_class, field, foreign_key ]
id:
id:
type: integer
generator:
strategy: AUTO
fields:
locale:
type: string
length: 8
object_class:
type: string
length: 255
field:
type: string
length: 32
foreign_key:
type: string
length: 64
content:
type: text
通过执行此操作,数据库迁移可以正常工作。我有一个名为category_translation的新表。但是,当我尝试添加新的翻译时,我的sql请求中出现了一个由doctrine生成的错误。 Object_class字段和foreign_key为null。
这里是由doctrine生成的SQL请求:
INSERT INTO category_translation(locale,object_class,field,foreign_key,content)VALUES(?,?,?,?,?)',用params [\“fr \”,null,\“name \”,null,\ “toto \”]:\ n \ n \ nSQLSTATE [23000]:完整性约束违规:1048列'object_class'不能为空“}