在 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:不要在模式上删除全文索引:更新

Symfony2/Doctrine 提交表单需要很长时间

在 Doctrine2/Symfony2 中的重复条目上插入忽略

Symfony2 Doctrine2 获取所有表