静默合并重复的实体

时间:2016-11-24 10:41:44

标签: php doctrine-orm symfony symfony-forms

想象一个Tag实体可以链接到整个应用程序中的许多不同对象。

示例:

Tag
    name

Post
    body
    tag

我能够维护一个Post列表,其中附带Tag可以手动输入(我的意思是不从现有列表中选择)。

为此,我使用带有DataTransformer的表单,因此我的标签可以转换为对象,甚至绑定到数据库中的现有标签。

public function reverseTransform($tagString)
{
    if (!$tagString) {
        return null;
    }
    $tag = $this->tagManager->getOrCreateTagFromString($tagString);

    if (null === $tag) {
        throw new TransformationFailedException();
    }

    return $tag;
}

我的问题是,当我提交链接到相同新标签的Post集合表单时

Post1 -> "New tag 1"
Post2 -> "New tag 1"

我的变换器给了我2个新对象,因为它无法知道我们发布了重复的对象。

Post1
    tag -> "New tag 1" #1234 < Different
Post2
    tag -> "New tag 1" #1235 < managed entities

如何防止此重复和/或在刷新之前静默合并对象?

目前我正在运行一个“dedoublonning”功能,然后每个常规持续存在,不是你想的那么理想。

0 个答案:

没有答案