无法将 multi-select 下拉值保存到数据库

Cannot save multi-select dropdown value to the database

我想将多select下拉值保存到数据库。

这里是blade.php

 <select name="namedropdown[]" id="namedropdown" class="selectpicker" multiple data-live-search="true">
    <option value="" disabled selected>Nothing selected</option>
        @foreach ($tdropdown as $tdrop)
        <option value="{{$tdrop}}">{{$tdrop}}</option>
        @endforeach
 </select>

这是控制器中的保存功能

public function empstore(Request $request){

$employee = new employee();

$employee->namedropdown = $request->input('namedropdown');
$employee->namedropdown = implode(',', $employee->namedropdown);

$employee->save();
return redirect()->route('employee.index')->with('success','Data Added');

}

我的代码出现错误 Array to string conversion

请帮助我将多select 下拉值保存到数据库。提前谢谢你。

您不需要将 $request->input('namedropdown') 分配到模型中。

试试这个代码:

public function empstore(Request $request){

$employee = new employee();
$employee->namedropdown = implode(',', $request->input('namedropdown'));

$employee->save();

return redirect()->route('employee.index')
    ->with('success','Data Added');
}

P.S.: 你应该根据 PSR1、PSR2 和 PSR12 改进你的代码风格。方法必须是驼峰式的,class-名称必须是大驼峰式的。

这行看起来不对

$employee->namedropdown = $request->input('namedropdown');

$request->input('namedropdown') 将 return 一个 数组 并且您尝试将其 returned 值分配给 $employee->namedropdown我相信它是 string.

所以你最好直接这样做:

$employee->namedropdown = implode(',', $request->input('namedropdown'));

希望对您有所帮助!

你应该这样做

   $employee->namedropdown = implode(',', $request->input('namedropdown'));