用逗号将每个值与laravel中的多个选择分开

Posted

技术标签:

【中文标题】用逗号将每个值与laravel中的多个选择分开【英文标题】:separate each value with comma from multiple select in laravel 【发布时间】:2021-07-07 04:52:51 【问题描述】:

我让任务管理器有一个表单来分配我想要执行的任务,如果用户选择多个选项,那么它用逗号分隔

这是我的表格

<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');

【问题讨论】:

这个回答你的问题? ***.com/questions/39686114/… 这能回答你的问题吗? html Multiple Select value as comma separated string in GET variable 具有数组类型名称的多选,将为您提供多个值,因此在控制器中您将能够获得一个默认情况下实际上以逗号分隔的数组。然后将其存储为 json。 【参考方案1】:

试试这个,

更改名称=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 是 fk,所以它允许存储项目中的一个 id,所以你必须做的事情是使用 varchar 类型更改 staff_id,然后它将允许存储价值用逗号分隔。

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

【讨论】:

我试试这个,但它没有存储数据,它显示 id(但不存储)我所做的事情 你能给我这个 print_r($request->staff_id) 的输出吗

以上是关于用逗号将每个值与laravel中的多个选择分开的主要内容,如果未能解决你的问题,请参考以下文章

在引导双重列表框内,在选择一个选项时,我只想将一个值与值属性内的所有其他值分开

选择器

mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开

TSQL 将列中的逗号分隔值与逗号分隔参数进行比较

从其他表中为每个用逗号分隔的 id 选择多个数据

将逗号分隔的值与 MySQL 中的单列值匹配 [重复]