Laravel将多个值存储在不同的行中
你愿意帮我吗?我想输入多个值并用不同的行存储在数据库中。例如: 在输入形式上Laravel将多个值存储在不同的行中,laravel,Laravel,你愿意帮我吗?我想输入多个值并用不同的行存储在数据库中。例如: 在输入形式上 |project_id milestone_id| | 1 1,2,3 | | 2 2,4 | 我在数据库中的预期结果 |project_id milestone_id| | 1 1 | | 1 2 | | 1 3
|project_id milestone_id|
| 1 1,2,3 |
| 2 2,4 |
我在数据库中的预期结果
|project_id milestone_id|
| 1 1 |
| 1 2 |
| 1 3 |
| 2 2 |
| 2 4 |
这是我的视图(tasktable\projectmiles.blade.php)
这是我的模型(ProjectMilestone.php)
感谢您的高级实现这一目标的雄辩的方法是
public function store(Request $request)
{
foreach($request->milestone_id as $milestone_id) {
ProjectMilestone::create([
'project_id' => $request->project_id,
'milestone_id' => $milestone_id
]);
}
return redirect()->route('project-miles.index');
}
但这会影响系统的效率,因为如果选择了n个里程碑,则会有n个对数据库的查询
为了避免这个问题
public function store(Request $request)
{
$prject_milestone = collect();
foreach($request->milestone_id as $milestone_id) {
$project_milestones->push(
ProjectMilestone::make([
'project_id' => $request->project_id,
'milestone_id' => $miletone_id
])
);
}
DB::table('project_milestones')->insert($project_milestones);
return redirect()->route('project-miles.index');
}
这将只对数据库执行一个查询
选择权归您您还必须在视图中创建阵列。例:
<select name="milestone_id[]" id="milestone_id" class="form-control">
关于控制器,请参考@tharakaDilshan的答案 谢谢你的帮助。我尝试使用第二个代码,得到了如下错误:参数1传递给Illumination\Database\Query\Builder::insert()必须是数组类型,给定的对象,在第45行的C:\xampp3\htdocs\budgeting\app\Http\Controllers\ProjectMilestoneController.php中调用(第45行是DB::table('project\u里程碑')->insert($project\u里程碑))最后,我使用了第一个代码,非常感谢,如果您对第二个方法仍然感兴趣,可能是集合对象导致了错误。所以试试这个<代码>DB::table('project_milestones')->insert($project_milestones->toArray())代码>
public function store(Request $request)
{
foreach($request->milestone_id as $milestone_id) {
ProjectMilestone::create([
'project_id' => $request->project_id,
'milestone_id' => $milestone_id
]);
}
return redirect()->route('project-miles.index');
}
public function store(Request $request)
{
$prject_milestone = collect();
foreach($request->milestone_id as $milestone_id) {
$project_milestones->push(
ProjectMilestone::make([
'project_id' => $request->project_id,
'milestone_id' => $miletone_id
])
);
}
DB::table('project_milestones')->insert($project_milestones);
return redirect()->route('project-miles.index');
}
<select name="milestone_id[]" id="milestone_id" class="form-control">