Gedmo可翻译的yaml映射

时间:2017-07-27 09:12:47

标签: symfony doctrine-extensions

是否可以使用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'不能为空“}

0 个答案:

没有答案