【问题标题】:Insert multiple values as array into one column将多个值作为数组插入一列
【发布时间】:2020-05-01 00:32:00
【问题描述】:

我有一个要选择多个值的复选框。到目前为止,我得到了它的工作,数据正在插入到数据库中,但它是这种格式,

我的问题是我希望数据采用这种格式 ["value1","value2","value3"]。我正在使用 Laravel,这是我控制器中的代码:

public function store(NewsRequest $request) //ive removed most of the unnecessary code like the image upload and all to make this clean.
{
    $news = new News($request->except('files', 'image'));
    $serialize = implode(",", $news->majors); //this is my focus to change the format to ["value1","value2","value3"]

    //ready data for insertion
    $data = array(
        "name" => $news->name,
        "article_type_id" => $request->category,
        "majors" => $serialize,
        "content" => $news->content
    );

    DB::table('articles')->insert($data); //insert into database
}

目前我只能插入用逗号分隔的数据,但我希望按如下方式插入数据:

我尝试在互联网上四处寻找,但除了 JSON.stringify 之外我找不到任何可以提供帮助的东西。我希望在我的控制器本身中获得格式。我希望对此有所了解。提前谢谢你。

【问题讨论】:

  • 只需添加引号作为内爆字符串的一部分 - implode('","', $news->majors); 并在生成的字符串的开头和结尾连接相同的引号。
  • 试试这个:'['.implode('","', $news->majors).']'
  • 你试过json_encode($news->majors)吗?
  • 谢谢你们! '['.implode('","', $news->majors).']' 成功了! :)
  • 不要这样做。数据库中的数据需要规范化,否则您将在以后遇到问题。使用relationships

标签: php mysql arrays laravel


【解决方案1】:

您可以考虑在迁移文件中为列使用 json 属性,然后在相关模型中您可以将该列转换为数组

【讨论】:

    【解决方案2】:

    在开头、内部 implode() 和结尾处添加引号会起到神奇的作用。

    $serialize = '["'.implode('","', $news->majors).'"]';
    

    【讨论】:

      猜你喜欢
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 2013-04-13
      • 2015-11-11
      相关资源
      最近更新 更多