【问题标题】:How to save multiple select in database?如何在数据库中保存多项选择?
【发布时间】:2019-11-07 08:56:58
【问题描述】:

我有一个多选选项,我想将所有记录保存在数据库中,现在它只保存最后一个,我该怎么做?我需要使用逗号 (,) 从 tags 保存多选。 . 这是我的控制器和我尝试的方法

$news = News::create([
                        'locale' => Session::get('admin_locale'),
                        'title' => $request['title'],
                        'slug' => Slugify::slugify($request['title']),
                        'news_class' => $request['news_class'],
                        'description' => $request['description'],
                        'tag' => $request['tag'],
                        'tags' => $request->input['tags'],
                        'category' => 'news',
                        'category_id' => $request['category_id'],
                        'metatitle' => $request['title'],
                        'metadescription' => substr(strip_tags($request['description']), 0, 160),
                        'image' => $image,
                    ]);

这是我的看法:

  <div class="row d-flex justify-content-center mt-100 col-md-12 g-mb-30" >
    <div class="col-md-12"   > 
        <label class="g-mb-10">Tags</label>
        <select id="choices-multiple-remove-button" placeholder="Select" multiple title="Category Talent" name="tags">

                @foreach($news as $tag)
                            <option value="{{ $tag->tag }}">{{ $tag->tag }}</option>
                @endforeach 
        </select> </div>
</div>

【问题讨论】:

  • 您的tags 字段是什么类型的?我假设您的意思是$request-&gt;input('tags') 而不是$request-&gt;input['tags']
  • varchar(255)
  • 那么您想如何将多个标签保存到该字段中?逗号分隔列表?
  • 中间有逗号。 (tag1,tag2,tag3)。

标签: database laravel


【解决方案1】:

要传递多个值,您可能希望将输入重命名为数组:

<select ... name="tags[]">

然后在服务器端,您应该在输入 tags 下将它们作为数组接收:

$tags = $request->input('tags', []);

您可以使用implode 连接数组元素以获得字符串表示:

$tags = implode(',', $tags);

PHP Manual - Function Reference - Text Processing - Strings - Functions - implode

$news = News::create([
    ...
    'tags' => implode(',', $request->input('tags', [])),
    ...
]);

【讨论】:

  • 感谢您的回复,这样的方式正确吗? jsfiddle.net/pfsgy2rx
  • 谢谢,效果很好!我还有一个问题:是否有可能有一个选择选项(有 3 个选项 - Paul、Alex、键入自定义名称),并且两者都有 name="tags"?比如,如果 Paul 和 Alex 没问题,选择他们,其他人在输入中输入一个具有相同名称的名称。
  • 使用 javascript 你可以有某种类型的选择,可以让你从预定义的选项中选择,然后可以输入你自己的,比如 select2 可能 .... 或者你可以只让两个输入都是命名为tags[],所以你最终得到一个数组
猜你喜欢
  • 1970-01-01
  • 2014-05-04
  • 2014-06-03
  • 2016-04-08
  • 2019-01-19
  • 2010-12-02
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多