Laravel 4,PHP将每个Hashtag保存在一个DB Row中

时间:2014-01-18 08:33:24

标签: php string laravel laravel-4

我正在尝试将主题标签保存到数据库中。目前,它们使用image_id和以下格式保存在一行中:

Hashtags:    #test bla #test #test

DB:    test,test,test

我需要做些什么来保存单个数据库行中的每个主题标签,并保留correstpondig photo_id?

以下是我保存主题标签的方法:

$hashtag = new Hashtag;

  $hashtag->photo_id = $photo->id;

      $hashtag_string = Input::get('hashtags');




        $str = $hashtag_string;

            preg_match_all('/#([^\s]+)/', $str, $matches);

        $hashtags_final = implode(',', $matches[1]);




$hashtag->hashtag = $hashtags_final;
$hashtag->save();

1 个答案:

答案 0 :(得分:4)

根据您的需要,有几种解决方案:

<强>首先: 您可以循环使用主题标签并使用正确的image_id保存它们。像这样:

$hashtag_string = Input::get('hashtags');

preg_match_all('/#([^\s]+)/', $hashtag_string, $matches);

//looping through matched items in your $matches array
foreach($matches as $tag)
{
  $hashtag = new Hashtag();
  $hashtag->image_id = $photo->id;
  $hashtag->hashtag = $tag;
  $hashtag->save();
}

第二:ImageHashtag之间创建多对多关系,并充分利用它。您可以在creatingusing

的官方文档中找到所有内容