tp6框架 万级数据入库 php函数优化

将万级数据入库并判断有无   没有则新增    上篇是用mysql的replace into实现   本篇是另一种方法

这是我的数据格式:

$data = [

[ 'KCH' => 'value1', 'other_column1' => 'value_other1_1', 'other_column2' => 'value_other2_1', ], [ 'KCH' => 'value2', 'other_column1' => 'value_other1_2', 'other_column2' => 'value_other2_2'],

];

$kchValues = array_column($data, 'code');

$existingRecords = SchoolSelfCourse::whereIn('code', $kchValues)->select();

$existingKCHValues = array_flip(array_column($existingRecords->toArray(), 'code'));

$dataToInsert = array_filter($data, function ($record) use ($existingKCHValues) {
    return !isset($existingKCHValues[$record['code']]);
});

if (!empty($dataToInsert)) {
    return SchoolSelfCourse::insertAll($dataToInsert);
}

code字段为数据唯一标识

虽然此种方法比replace into耗时稍长  但不会改变数据的自增id

你可能感兴趣的:(php,开发语言)