You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel跨表插入数据时如何将id转为带custom_前缀的custom_id

实现方案

直接在给custom_id赋值时拼接custom_前缀即可,PHP使用.运算符完成字符串拼接,修改后的代码如下:

$qry = DB::table('table1')->get();

foreach($qry as $key => $data_in) {
    DB::table('table2')->insert([
        "custom_id" => 'custom_' . $data_in->id, 
        "status" => $data_in->status
    ]);
}

性能优化方案

如果待迁移的数据量较大,循环单条插入会产生大量SQL请求,性能较差,推荐使用分块查询+批量插入的方式优化:

$insertData = [];

// 每次从table1读取100条数据处理,避免内存溢出
DB::table('table1')->orderBy('id')->chunk(100, function ($records) use (&$insertData) {
    foreach ($records as $item) {
        $insertData[] = [
            'custom_id' => 'custom_' . $item->id,
            'status' => $item->status
        ];
    }
});

// 一次性批量插入所有组装好的数据
DB::table('table2')->insert($insertData);

注意事项

  • 提前确认table2的custom_id字段长度足够容纳拼接后的字符串,避免字段长度不足导致数据截断
  • 如果custom_id设置了唯一索引,提前校验拼接后的值无重复,避免插入时唯一冲突报错

内容的提问来源于stack exchange,提问作者leon0012

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 02:06:02