我有这个代码
wdDoc.Range(wdDoc.Goto(wdGoToPage, wdGoToLast).Start - 1, wdDoc.Range.End).Delete
hashtagName是一个功能,可修改hashtag的名称,因为我使用了WYSCIWYG编辑器,有时我在名称栏中遇到了html标签的问题。但这在这里并不重要。我试图解决问题,所以找到了可以代替附加使用的代码。
private function hashtags($article){
$htag = '#';
$arr = explode(" ", $article->description);
$arrc = count($arr);
$i = 0;
$arr_id = [];
while($i < $arrc){
if(substr($arr[$i], 0, 1) === $htag ){
$hash = Hashtag::firstOrCreate(
['name' => $this->hashtagName($arr[$i]), 'slug' => str_slug(ltrim($arr[$i], '#'))]
);
$article->hashtags()->attach($hash);
}
$i++;
}
}
但这不能解决我的问题。如果我存储具有2个或更多相同标签的文章,它将创建相同数量的关系。如果我在同一篇文章中使用3个标签,我将有3个关系。我该如何解决?
答案 0 :(得分:0)
实施中的问题是您要检查hTag的ID。
为什么
因为如果您有两个相同的hTag,并且保存了第一个,则将获得ID1,然后将其附加,直到这里没有问题为止。但是,当您保存第二个相同的对象(首先不应该这样做)时,您将获得ID2,其中ID1与ID2不同,因此此检查行No such property: displayName for class: org.springframework.security.ldap.userdetails.LdapUserDetailsImpl
将找不到具有相同名称的hTag。 / p>
可能的解决方案:
$article->hashtags->contains($hash->id)