在 Doctrine (symfony2) 中对可翻译实体进行版本控制
Posted
技术标签:
【中文标题】在 Doctrine (symfony2) 中对可翻译实体进行版本控制【英文标题】:Versioning translatable entities in Doctrine (symfony2) 【发布时间】:2012-06-18 11:11:54 【问题描述】:集成使用 gedmo 可翻译行为的某些实体的版本控制系统的最佳方法是什么?
Gedmo Loggable 似乎不像这样工作:
/**
* @ORM\Entity(repositoryClass="Alef\JobOffersBundle\Repository\JobOfferRepository")
* @ORM\Table(name="alef_job_offer")
* @Gedmo\Loggable
*/
class JobOffer implements Loggable, Translatable, UserOwnerInterface
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Alef\UserBundle\Entity\User")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id")
*/
protected $user;
/**
* @var datetime $created
*
* @Gedmo\Timestampable(on="create")
* @ORM\Column(name="created", type="datetime")
*/
protected $created;
/**
* @var datetime $updatedAt
*
* @ORM\Column(type="datetime")
* @Gedmo\Timestampable(on="update")
*/
protected $updatedAt;
/**
* @Gedmo\Versioned
* @Gedmo\Translatable
* @ORM\Column(name="title", type="string", length=255)
*/
protected $title;
/**
*
* @Gedmo\Versioned
* @Gedmo\Translatable
* @ORM\Column(name="description", type="text")
*/
protected $description;
[...]
ext_logged_entries
中的 data
字段为空。
或者也许有更好的方法来存储可翻译和版本化的实体?也许不使用 Gedmo 学说扩展?
【问题讨论】:
对我来说看起来不错。你试过 Stof 的 DoctrineExtensionBundle 吗? github.com/stof/StofDoctrineExtensionsBundle 看看gediminasm.org/article/… 并向下滚动到 cmets,@Birko 发表的评论解释了这一点,但我无法让它完美地工作。在我看来,这个解决方案有点棘手。 【参考方案1】:Loggable 和 Translatable 不能一起使用。 看看here。
【讨论】:
以上是关于在 Doctrine (symfony2) 中对可翻译实体进行版本控制的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2 & Doctrine:创建自定义 SQL 查询
Symfony2 - Doctrine - 在实体管理器刷新调用中捕获错误
Symfony2 / Doctrine2:不要在模式上删除全文索引:更新