php - Laravel:如何使用 select2 将多个数据插入 mysql 数据库?
问题描述
我正在尝试将数据插入数据库。但我不知道如何将多选数据插入 mysql 数据库。
<div class="form-group">
<select name="languages[]" class="select2 form-control" multiple="multiple "required>
<option selected>English</option>
<option VALUE="french">French</option>
<option VALUE="german">German</option>
<option VALUE="spanish">Spanish</option>
<option VALUE="turkish">Turkish</option>
<option VALUE="italian">Italian</option>
</select>
</div>
</div>
控制器
public function store(Request $request)
{
User::create($request->all());
return redirect()->back();
}
返回错误
ErrorException 数组到字符串的转换
解决方案
$request->languges
是一个数组,您不能将数组保存到VARCHAR()字段中。
在您的 name 属性中,languages[]
将创建一个数组,而不是字符串。而 name 属性 languages
创建一个字符串
如果您有一个数组,那么您需要在控制器中使用 foreach 循环。
使用select2您需要在发送多个数据时创建一个数组。
table属性需要是字符串而不是数组,所以让我们将数组转换为字符串:
使用服务器端
使用foreach:
public function store(Request $request)
{
$data = $request->all();
$x = NULL;
foreach($request->languages as $key => $value) {
$x .= $value .", ";
}
$data['languages'] = $x;
User::create($data);
return redirect()->back();
}
或者,使用内爆:
public function store(Request $request)
{
$data = $request->all();
$data['languages'] = implode(',', $request->languages);
User::create($data);
return redirect()->back();
}
对于客户端,jQuery
:
您的标题说“将选择框的选定值作为字符串发送到 PHP”。您可以在 JS 中通过捕获表单的提交事件并使用.join()
来更改该字段的值来做到这一点。
$('#formid').on('submit', function(){
$('#e1').val($('#e1').val().join(','));
});
您的表格(未给出)需要一个 id<form id="formid" ...>
推荐阅读
- iframe - iframe 中的 Keycloak SAML 请求:没有“Access-Control-Allow-Origin”(CORS 错误)
- json - 在 Pandas 中展平嵌套的 JSON 列
- c++ - Qt - 如何将现有的小部件和 qscrollbar 放入 QScrollArea
- python - 如何使用 read_csv 在 Pandas 中读取日期时间?
- collections - p:collector vs 自定义包装类的用例是什么?
- flutter - 你如何在 Flutter 中使用 ID 嵌入 Youtube 视频?
- java - Java POI读取xls文件
- kotlin - nc 未显示 int 套接字响应
- image - 如何在pyqtgraph中显示png文件?
- pandas - 使用 Dask 加载具有不同列的许多 CSV 文件