[英]Remove all tags before store tags
我有這個代碼
private function hashtagName($string){
$name = $string;
$name = ltrim($name, '#');
$name = trim($name);
return $name;
}
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], '#'))]
);
if (! $article->hashtags->contains('hashtag_id', $this->hashtagName($arr[$i]))) {
$article->hashtags()->save($hash);
}
}
$i++;
}
}
此代碼將標簽正確存儲到db中。 如果我嘗試在WYSCIWYG編輯器中使用一些標簽,則會遇到問題。 所見即所得(WYSCIWYG)編輯器經常添加它自己的html標記,並且此代碼將其保存。 例如,它存儲在數據庫helloworld中
由於Article
可以包含許多hashtags
而hashtag
可以屬於許多articles
,因此這是ManyToMany
關系。
您可以使用sync
方法sync
主題標簽,所有不在新關聯數組中的舊主題標簽都將被自動刪除...
$article->hashtags()->sync($arrayOfHashtagsIds);
來自文檔
您也可以使用sync方法構造多對多關聯。 sync方法接受一組ID放置在中間表上。 給定數組中沒有的任何ID將從中間表中刪除。 因此,完成此操作后,中間表中將僅存在給定數組中的ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.