Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在存储标记之前删除所有标记_Php_Mysql_Laravel_Tags_Relationship - Fatal编程技术网

Php 在存储标记之前删除所有标记

Php 在存储标记之前删除所有标记,php,mysql,laravel,tags,relationship,Php,Mysql,Laravel,Tags,Relationship,我有这个密码 private function hashtagName($string){ $name = $string; $name = ltrim($name, '#'); $name = trim($name); return $name; } private function hashtags($article){ $htag = '#'; $arr = explode(" ", $article->descriptio

我有这个密码

  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++;
    }
  }
私有函数hashtagName($string){
$name=$string;
$name=ltrim($name,#’);
$name=trim($name);
返回$name;
}
私有函数hashtags($article){
$htag='#';
$arr=分解(“,$article->description);
$arrc=计数($arr);
$i=0;
$arr_id=[];
而($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->contains('hashtag_id',$this->hashtagName($arr[$i])){
$article->hashtags()->save($hash);
}
}
$i++;
}
}

此代码将标记正确地存储到数据库中。如果我尝试在WYSCIWYG编辑器中使用一些hashtag,我会遇到问题。通常,WYSCIWYG编辑器会添加自己的html标记,这段代码会保存它。例如,它存储在DB helloworld中,因为
文章
可以有许多
标签
,而
标签
可以属于许多
文章
,所以它是一种
多人
关系

您可以使用
sync
方法同步hashtags,任何不在新关联数组中的旧hashtags都将自动删除

$article->hashtags()->sync($arrayOfHashtagsIds);

同步关联
您还可以使用sync方法构造多对多关联。sync方法接受要放置在中间表上的ID数组。不在给定数组中的任何ID都将从中间表中删除。因此,此操作完成后,中间表中将只存在给定数组中的ID。

因为一篇
文章可以有许多
标签
,而一个
标签
可以属于许多
文章
,这是一种
多人
关系

您可以使用
sync
方法同步hashtags,任何不在新关联数组中的旧hashtags都将自动删除

$article->hashtags()->sync($arrayOfHashtagsIds);

同步关联 您还可以使用sync方法构造多对多关联。sync方法接受要放置在中间表上的ID数组。不在给定数组中的任何ID都将从中间表中删除。因此,此操作完成后,中间表中将只存在给定数组中的ID