【发布时间】:2015-10-30 06:12:52
【问题描述】:
我成功地使用 StofDoctrineExtension Bundle 来处理实体翻译。 因此,我在实体中的属性具有上面的@Translable - 注释。
当我想以特定语言显示具有相关实体(数据库中存在翻译条目)的实体时,出现以下问题:
假设我有一个映射到联系人实体 (OneToOne) 的作者实体,并且我想以“fr_fr”语言显示作者详细信息,我正在使用以下代码:
$author = ...;
$author->setTranslatableLocale('fr_fr');
$this->get('fos_user.entity_manager')->refresh($author);
此代码正在将作者翻译成语言“fr_fr” - 但映射的联系人实体并未翻译成目标语言“fr_fr”。我当然已经在作者实体的联系人映射中使用了 cascade=refresh 选项:
/**
* @ORM\OneToOne(targetEntity="AuthorContact", inversedBy="author",
cascade={"persist", "remove", "refresh"})
* @ORM\JoinColumn(name="contact_id", referencedColumnName="id")
*/
protected $contact;
当我在控制器中使用以下“额外行”为作者获取时,我得到了两个实体的翻译:
$author = ...;
$author->setTranslatableLocale('fr_fr');
$author->getContact()->setTranslatableLocale('fr_fr');
$this->get('fos_user.entity_manager')->refresh($author);
$this->get('fos_user.entity_manager')->refresh($author->getContact());
按照我的口味,这有点难看,为什么无论如何使用“cascade=refresh”选项都不起作用?
@edit:我觉得这是级联刷新的bug?
问候。
【问题讨论】:
标签: php symfony doctrine-orm internationalization entitymanager