laravel 中的多个 select 用逗号分隔每个值

separate each value with comma from multiple select in laravel

我让任务管理器有一个表格,我想在其中分配任务,如果用户 select 有多个选项,则用逗号分隔

这是我的表格

<form method="post" action="{{route('assignments.store')}}">
        @csrf
        <table>
                <tr>
                    <td>Task Title : </td>
                    <td>
                        <select name="task_id" id="task_id">
                            @foreach ($tasks as $task)

                                <option value="{{ $task->id }}">{{ $task->title }}</option>

                            @endforeach
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Staff Name : </td>
                    <td>
                        <select name="staff_id" multiple>
                            <option value=null>Select One</option>
                            @foreach ($staffs as $staff)

                                <option value="{{ $staff->id }}">{{ $staff->name }}</option>

                            @endforeach
                        </select>
                    </td>
                </tr>
                <tr>
                    <td>Done At :</td>
                    <td><input type="time" name="done_at" class="form-control"></td>
                </tr>
            <td><button class="btn btn-primary" name="submit" type="submit" value="submit">Submit</button></td>
        </table>
    </form>

这是我的存储函数,用于存储从表单收到的数据

$request->validate([
        'staff_id' => 'required',
        'task_id' => 'required',
        'done_at' => 'sometimes',
    ]);
    $assignment = new Assignment();
    $assignment->staff_id = $request->staff_id;
    $assignment->task_id = $request->task_id;
    $assignment->done_at = $request->done_at;
    $assignment->save();
    return redirect()->route('assignments.index', compact('assignment'))->withSuccess('Done');

试试这个,

更改名称=staff_id[]

<select id="staff" name="staff_id[]" multiple="multiple">
---
</select>

您可以通过

查看
dd(implode(',', $request->staff_id));

$assignment = new Assignment();
$assignment->staff_id = implode(',', $request->staff_id);

还有一件事我忘了在你的数据库中告诉你我认为 staff_id 是 f.k 所以它将允许在项目中存储一个 id 所以你必须做的改变 staff_id 使用 varchar 类型然后它将允许用逗号分隔存储值。

下面是我们正在将数组转换为字符串的图像形式内爆 请设置select name = staff_id[] 那么只有你会得到多个数据