小编har*_*mon的帖子

当与实体管理器多次合并时,Symfony/Doctrine实体会导致脏实体关联

我正在使用Symfony2和Doctrine

我有一个doctrine实体,它被序列化/反序列化为一个会话并用于多个屏幕.该实体具有多个一对多关联.

该学说实体具有以下一对多,例如:

class Article {

...

    /**
     * @ORM\OneToMany(targetEntity="image", mappedBy="article", cascade=  {"merge","detach","persist"})
     */
    protected $images;

    public function __construct()
    {
        $this->images = new ArrayCollection();
    }

    .....
}
Run Code Online (Sandbox Code Playgroud)

文章实体按如下方式保存和检索:

    public function saveArticle($article)
    {
        $articleSerialized = serialize($article);
        $this->session->set('currentArticle',$articleSerialized);
    }

    public function getArticle()
    {
        $articleSerialized = $this->session->get('currentArticle');
        $article = unserialize($articleSerialized);
        $article = $this->em->merge($article);

        return $article;
    }
Run Code Online (Sandbox Code Playgroud)

我可以多次向会话中保存和加载实体,然后将其合并回实体管理器并保存.这只是它是一个新实体.

但是,一旦我从数据库加载实体然后将其保存到会话,我就会遇到问题.

我知道,从其他帖子中,在您取消序列化已保存的实体后,您必须运行$ em-> merge($ entity);

我能够合并实体,添加一个新的子实体(一对多),然后保存:

$article = $this->getArticle(); //Declared above, gets article from session

$image = new Image();
$image->setFilename('image.jpeg');
$article->addImage($image);

$this->saveArticle($article); //Declared above, returns the …
Run Code Online (Sandbox Code Playgroud)

serialization symfony doctrine-orm

9
推荐指数
1
解决办法
6984
查看次数

标签 统计

doctrine-orm ×1

serialization ×1

symfony ×1