Laravel使用非数组变量插入多个记录


Laravel Inserting multiple records, with non array variable

Hi我有一个表(项目),可以为它分配多个用户。创建新项目时,我需要将选定的用户插入到一个链接表中,该链接表具有用户id和创建的项目id。

    $project = new Project;
    $project->project_name = $request->project_name;
    $project->expected_start_date = $request->expected_start_date;
    $project->expected_end_date = $request->expected_end_date;
    $project->project_desc = $request->project_desc;
    $project->client_id = $request->client_id;
    $project->save();
    foreach($request->user_id as $user){
        $link_project_user = new link_project_user;
        $link_project_user->user_id = $user;
        $link_project_user->project_id = $project->id;
        $link_project_user->save();
    }

目前,我正在创建项目,并通过$project->id获取id,然后循环选择所选用户,并为每个用户创建一个新用户。

然而,这似乎有点低效,因为理论上这会对数据库进行多次查询。实现上述插入内容的最有效和最佳方式是什么。

我最初尝试传入一个用户数组,但这需要一个项目id数组。

您可以像这样进行大规模插入。

$project = new Project;
$project->project_name = $request->project_name;
$project->expected_start_date = $request->expected_start_date;
$project->expected_end_date = $request->expected_end_date;
$project->project_desc = $request->project_desc;
$project->client_id = $request->client_id;
$project->save();
$lpus = [];
foreach($request->user_id as $user){
    $link_project_user["user_id"] = $user;
    $link_project_user["project_id"] = $project->id;
    $lpus[] = $link_project_user;   
}
link_project_user::insert($lpus);