【问题标题】:what is the alternative of insertGetId for multiple row insertion in laravel在 laravel 中用于多行插入的 insertGetId 的替代方法是什么
【发布时间】:2021-10-17 21:10:10
【问题描述】:

我在表中插入多行,并且我需要获取两个行 id 才能插入另一个表,我将此查询用于单行:

    $ppfdata=[];

    foreach($request->package_type_id as $ppfkey => $ppfno){

        $ppfinput=[];

        $ppfinput['paid_amount'] = $post_data['package_price'][$ppfkey];
        $ppfinput['enroll_able'] = $post_data['enrollable'][$ppfkey];
        $ppfinput['user_id'] = $post_data['user_id'];
        $ppfinput['package_id'] = $post_data['package_id'][$ppfkey];
        $ppfinput['plan_id'] =  $post_data['plan_id'][$ppfkey];
        $ppfinput['status'] = $post_data['status'][$ppfkey];

        $ppfdata[]=$ppfinput;
    }

    $update_transections = DB::table('package_plan_fees')->insertGetId ($ppfdata);

我应该为多行使用什么?

【问题讨论】:

  • 循环,你应该使用循环
  • 这能回答你的问题吗? Laravel - multi-insert rows and retrieve ids
  • @Justinas 对不起,我输入了错误的代码,请再次检查问题
  • 仍然循环。它只做两个简单的 SQL 查询:INSERT INTOSELECT LAST_INSERT_ID()。而且最后一个只能对最近的查询执行,不能对N个查询执行

标签: php laravel


【解决方案1】:

您需要遍历这些项目。你可以这样做:

$ids = [];
foreach ($ppfdata as $item) {
    $ids[] = DB::table('package_plan_fees')->insertGetId($item);
}

【讨论】:

  • 只有当 ID 是单个自增字段时才成立。如果它是多列或例如VARCHAR(64),它不起作用。此外,如果其他进程在您的查询之间插入额外的查询怎么办?
  • @Justinas 你说得对,但由于他在代码中使用了它,我们可以假设他有一个工作的insertGetId
猜你喜欢
  • 2021-10-03
  • 2019-05-05
  • 1970-01-01
  • 2021-12-07
  • 2018-10-13
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多