Mysql 保存对象错误标记

Mysql 保存对象错误标记,mysql,symfony,object,propel,Mysql,Symfony,Object,Propel,我的一小部分代码有问题。Symfony2,推进ORM $tagNames = $tags->getTags(); $tagsArray = explode(',', $tagNames); $postTagToDelete = PostTagQuery::create()->filterByPostId($post->getId())->find(); if ($postTagToDelete) { $postTagToD

我的一小部分代码有问题。Symfony2,推进ORM

    $tagNames = $tags->getTags();
    $tagsArray = explode(',', $tagNames);

    $postTagToDelete = PostTagQuery::create()->filterByPostId($post->getId())->find();
    if ($postTagToDelete) {
        $postTagToDelete->delete();
    }

    foreach ($tagsArray as $tagName) {
        $tag = TagQuery::create()->filterByName($tagName)->findOne();
        //when i find an existing tag,
        // there is no need to create another one
        //I just simply add it **(it's not working here)**
        if ($tag != null) {
            $post->addTag($tag);

        } else {
            //when tag is new
            $tag = new Tag();
            $tag->setName($tagName);


            $post->addTag($tag);

        }
    }
每次我创建PostTags的新对象时。我清理PostTag的主要对象,然后创建一个新对象

问题是,它总是不会保存$tagname中的第一个标记

更具体地说,让我们假设$tagsArray中有四个元素

[第一、第二、第三、第四]

它们都已经是数据库了,所以如果有四次它会先进入

问题是,只有第二,第三和第四将被保存。不会有第一个。为什么?

另一个例子是,如果我有array[first],并且第一次在数据库中执行相同的操作,它将每隔第二次保存一次。 所以我有一个类似于数据库中,数据库为空,数据库中,数据库为空,[…]每个请求尝试

有什么建议吗

谢谢,我真的需要

Thx, D

毕竟,我找到了一个灵丹妙药

    $tagNames = $tags->getTags();
    $tagsArray = explode(',', $tagNames);
    $tagsArray = array_unique($tagsArray);

    $tagManager = $this->container->get('back_tag.manager');
    $tags = new PropelOwnCollection();
    foreach ($tagsArray as $tag) {
        if (is_numeric($tag)) { //naprawa bledu pluginu select2
            $tags->append($tagManager->findOneOrCreateById($tag));
        } else if (!empty($tag)) {
            $tags->append($tagManager->findOneOrCreateByName($tag));
        }
    }
    $post->setTags($tags);
    $post->save();

您的意思是在PostTag表中没有关系first=>post的行?在foreach之后返回$posts->getTags什么?这个问题还没有解决,但是我找到了另一个解决方案,它的效果很好。非常感谢。