Laravel 存储/插入数组值到数据库 Mysql

Posted

技术标签:

【中文标题】Laravel 存储/插入数组值到数据库 Mysql【英文标题】:Laravel Store/Insert Array Values to Database Mysql 【发布时间】:2019-04-27 00:43:55 【问题描述】:

我的代码中的问题是我无法在数据库 mysql 中存储或插入数组值,这是我的控制器代码,请帮助我。谢谢。我在 Controller 中的代码没有数组或任何数组。我不知道如何将它变成数组。

控制器

    public function store(Request $request)

    $this->validate($request,[
        'city' => 'required'

    ]); 


   $citi = new City;
   $citi->city = $request->input('city');
   $citi->save();

   return redirect('/lugar')->with('success', 'Data Inserted');

查看

<td> Form::text('city[]', '', ['class' => 'form-control name_list', 'placeholder' => 'Add Country']) </td>

【问题讨论】:

你遇到了什么错误? 这里,请参阅_Argument 1 传递给 Illuminate\Database\Grammar::parameterize() 必须是数组类型,给定字符串 _ Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given的可能重复 这不是 laravel 而是纯 php。我不明白:( 【参考方案1】:

您不能在 MySQL 中存储数组,如果您将它与 Mongo (NoSQL) 进行比较,它会有所不同。

您可以做的是,将该数组转换为 json 字符串。所以json_encode($request-&gt;city) 并保存它。

然后,如果您想修改从 DB 中检索到的值,可以使用 json_decode($data-&gt;city) 将其转回数组。

【讨论】:

【参考方案2】:

您实际上可以使用 serialize 或 json_encode 保存它。

使用序列化:

$citi->city = serialize($request->input('city'));

使用 json_encode:

$citi->city = json_encode($request->input('city'));

然后只需在您的刀片文件上使用 unserializejson_decode

【讨论】:

如何反序列化?? 数组现在在我的数据库中,但它们是序列化的。我怎样才能对它们进行反序列化?他们有这个 a:2:i:0;s:7:"New York";i:1;s:8:"Chicago"; 的值 嘿@kapitan,除了这个序列号的 a:2:i:0;s:7: 之外,一切都很好。我可以删除它并更改正常吗?帮助我,这样我就可以对您的答案进行投票并将其标记为 asnwer ty 反序列化($myvariable) 或 json_decode($myvariable)

以上是关于Laravel 存储/插入数组值到数据库 Mysql的主要内容,如果未能解决你的问题,请参考以下文章

Laravel - 在数据库中在一列中插入动态图像数组 JQuery

Laravel 5:将图像网址作为数组插入列

获取 JSON 值到数组

使用 laravel 4 上的循环将数据数组存储到单个数组中

laravel 5.6批量插入json数据

使用 Laravel 和 ajax 保存多维数组