如何将带有翻译的记录添加到fixture符号中



我需要一些解决方案,使用来自gedmo/doctrine扩展的可翻译插件,将具有en和es语言翻译的记录器添加到固定装置中。

我测试了几种方法,但我无法达到目标

        $musicGenre = new MusicalGenre();
        $musicGenre->setName($genre);
        $musicGenre->setEnabled(true);
        $this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
        $manager->persist($musicGenre);
        /*$musicGenre2 = new MusicalGenreTranslation();
        $musicGenre2->setLocale('es_ES');
        $musicGenre2->setObjectClass(MusicalGenre::class);
        $musicGenre2->setField('genre');
        $musicGenre2->setContent($genre);
        $musicGenre2->setForeignKey($key+1);
        $manager->persist($musicGenre2);*/

我不知道如何用其他语言设置或更新每个记录,因为默认记录是用英语插入的。

我找到了一个丑陋的解决方案,但运行了。

$musicGenre = new MusicalGenre();
        $musicGenre->setName($genre);
        $musicGenre->setEnabled(true);
        $musicGenre->setCreatedBy('admin');
        $musicGenre->setUpdatedBy('admin');
        $musicGenre->setCreatedAt(new DateTime());
        $musicGenre->setUpdatedAt(new DateTime());
        **$musicGenre->setTranslatableLocale('en');**
        $this->addReference(self::MUSIC_GENRE_REFERENCE."-".$key, $musicGenre);
        $manager->persist($musicGenre);
        $manager->flush();
        $musicGenre2 = new MusicalGenreTranslation();
        $musicGenre2->setLocale('es');
        $musicGenre2->setObjectClass(MusicalGenre::class);
        $musicGenre2->setField('name');
        $musicGenre2->setContent(self::GENRES_ES[$key]);
        $musicGenre2->setForeignKey($musicGenre->getId());
        $manager->persist($musicGenre2);
        $manager->flush();
        $musicGenre3 = new MusicalGenreTranslation();
        $musicGenre3->setLocale('en');
        $musicGenre3->setObjectClass(MusicalGenre::class);
        $musicGenre3->setField('name');
        $musicGenre3->setContent($genre);
        $musicGenre3->setForeignKey($musicGenre->getId());
        $manager->persist($musicGenre3);
        $manager->flush();

在第一块,我把音乐流派插在桌子上。对于它的翻译,我正在做一个手动插入音乐流派与当地翻译。

最新更新