Mysql 保存对象错误标记
我的一小部分代码有问题。Symfony2,推进ORMMysql 保存对象错误标记,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
$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什么?这个问题还没有解决,但是我找到了另一个解决方案,它的效果很好。非常感谢。