从生成的复选框将多个条目插入数据库

Posted

技术标签:

【中文标题】从生成的复选框将多个条目插入数据库【英文标题】:Inserting multiple entries to database from generated checkboxes 【发布时间】:2016-02-05 13:15:13 【问题描述】:

如果之前有人问过这个问题,我深表歉意,这是我第一个使用 laravel 的项目,我找不到类似的问题。

我正在尝试将复选框字段中的值插入到数据库中,该字段具有从另一个数据库生成的值。

我的表单中的一个片段:

        @foreach($labourTypes as $id => $name)
            <div class="checkbox">
                <label>
                    !! Form::checkbox("labour_types[]", $id) !! $name
                </label>
            </div>
        @endforeach

我正在将此表单中的数据插入到两个不同的表中。我插入了第一个表数据,但是第二个表需要来自这些复选框的数据,以及来自第一个表的数据。

这是我目前在我的控制器中拥有的:

    $labour_types = Input::get('labour_types');
    DB::table('employee')->insert([
        'id' => null,
        'employee_name' => $_POST['employeeName']
    ]);
    foreach($labour_types as $labour_type)
        DB::table('employee_labour_types')->insert([
            'id' => null,
            'labour_type_id' => 'labour_type[]',
            'employee_id' => null
        ]);
    

第二张表中的ID是自增的,但员工ID来自第一张表中的自增ID。如果他们有不同的劳动力类型,我正在尝试为同一员工分别输入。

例如在我的第二张表中:(id = 1, labour_type_id = 1, employee_id = 1), (id = 2, labour_type_id = 2, employee_id = 1) 可以从这个表格生成。

谢谢。

编辑:我已将数据发布到第二个表,但当前的employee_id 为空(如上) - 我现在正试图找到一种将employee_id 发布到employee_labour_types 表的方法。这是第一个插入中“员工”表中的“id”。这样做是查询它然后添加它的唯一方法吗?

谢谢。

【问题讨论】:

【参考方案1】:

在使用 Laravel 时,你并不想使用 $_POST。此外,从 php 中的输入读取时,您不会在名称中包含 []。要访问该数组,您将...

$labour_types = \Input::get('labour_types');
foreach($labour_types as $labour_type) 
    ...

【讨论】:

当你回复这个时,我实际上只是在编辑我的帖子。我应用了更改 - 但是我现在在尝试发布表单时出现错误:“未定义变量:labourTypes”在我的 .php 页面中具有表单 Undefined $labourTypes 与您发送的数据有关。如果您将 $labour_types 作为参数名称传递,我想您应该使用它。 我刚刚将 $labourTypes 变量(在我的 get 中)添加到我的帖子中,并将其添加到返回视图中,它似乎解决了我的问题。我现在正试图弄清楚如何从第一个插入中查询 ID 以将其插入到第二个表中【参考方案2】:

我得到了它的工作 - 对于未来的类似问题,我的解决方案:

我的查询:

$empid = DB::select("SELECT id AS \"Name\" FROM employee WHERE employee_name = '" . $_POST['employeeName'] . "'");

在我的插入语句中

    'employee_id' => $empid[0]->'Name'

【讨论】:

以上是关于从生成的复选框将多个条目插入数据库的主要内容,如果未能解决你的问题,请参考以下文章

将多个复选框插入数据库 Html Php

将多个复选框插入 MySQL (PDO)

使用 php 将多个复选框值和输入插入单个 sql 数据库

Oracle SQL:将选择从一个表插入另一个表,其中用户有多个带有订单号的条目

将来自http API的多个数据返回插入sql lite

防止 NHibernate 将 Returning 子句添加到生成的插入语句中