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->city)
并保存它。
然后,如果您想修改从 DB 中检索到的值,可以使用 json_decode($data->city)
将其转回数组。
【讨论】:
【参考方案2】:您实际上可以使用 serialize 或 json_encode 保存它。
使用序列化:
$citi->city = serialize($request->input('city'));
使用 json_encode:
$citi->city = json_encode($request->input('city'));
然后只需在您的刀片文件上使用 unserialize 和 json_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