从生成的复选框将多个条目插入数据库
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'
【讨论】:
以上是关于从生成的复选框将多个条目插入数据库的主要内容,如果未能解决你的问题,请参考以下文章