【问题标题】:Laravel Inserting multiple records, with non array variableLaravel插入多条记录,非数组变量
【发布时间】:2016-04-14 20:50:53
【问题描述】:

您好,我有一个可以分配多个用户的表(项目)。创建新项目时,我需要将选定的用户插入到带有用户 ID 和创建的 project_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。

【问题讨论】:

    标签: php mysql laravel orm eloquent


    【解决方案1】:

    您可以像这样进行批量插入。

    $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);
    

    【讨论】:

    • 简单优雅的解决方案,非常感谢!我曾想过这一点,但我认为可能有一个内置的 Laravel 功能。
    猜你喜欢
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 2020-03-18
    • 2012-05-26
    • 1970-01-01
    • 2014-08-25
    • 2016-12-31
    • 1970-01-01
    相关资源
    最近更新 更多