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">