where("steel_grade", "<>", "*")->whereNotNull("steel_grade")->get(); $materialMap = []; $productRuMap = []; foreach($materials AS $material) { $material->steel_grade = trim($material->steel_grade); $materialMap[$material->steel_grade] = $material->ru_group; $productRuMap[$material->steel_grade] = $material->product_standart; } function whatMaterialGroup($thisSteelGrade, $materialMap) { if(isset($materialMap[$thisSteelGrade])) { return $materialMap[$thisSteelGrade]; } else { foreach($materialMap AS $steelGrade => $group) { $similar = similar_text($steelGrade, $thisSteelGrade, $percentage); if($percentage > 95) { return $group; } } } } function whatMaterialRuGroup($thisSteelGrade, $productRuMap) { if(isset($materialMap[$thisSteelGrade])) { return $materialMap[$thisSteelGrade]; } else { foreach($materialMap AS $steelGrade => $group) { $similar = similar_text($steelGrade, $thisSteelGrade, $percentage); if($percentage > 95) { return $group; } } } } $weldmaps = db("weld_logs") /* ->where(function($query){ $query->orWhereNull("ru_material_group_1"); $query->orWhereNull("ru_material_group_2"); $query->orWhere("ru_material_group_1", ""); $query->orWhere("ru_material_group_2", ""); $query->orWhere("ru_material_group_1","*"); $query->orWhere("ru_material_group_2","*"); }) ->where("id",">", $lastId) ->take(setting('cron_job_batch_process_count')) */ ->get(); //dump("weldmaps count"); //dump($weldmaps->count()); $materialGroupUpdateCount = 0; $say = 0; DB::beginTransaction(); try { foreach($weldmaps AS $weldmap) { $weldmap->material_no_1 = trim($weldmap->material_no_1); $group1 = whatMaterialGroup($weldmap->material_no_1, $materialMap); //isset($materialMap[$weldmap->material_no_1]) ? $materialMap[$weldmap->material_no_1] : ""; $group2 = whatMaterialGroup($weldmap->material_no_2, $materialMap); //isset($materialMap[$weldmap->material_no_2]) ? $materialMap[$weldmap->material_no_2] : ""; $ruGroup1 = whatMaterialGroup($weldmap->material_no_1, $productRuMap); //isset($materialMap[$weldmap->material_no_1]) ? $materialMap[$weldmap->material_no_1] : ""; $ruGroup2 = whatMaterialGroup($weldmap->material_no_2, $productRuMap); //isset($materialMap[$weldmap->material_no_2]) ? $materialMap[$weldmap->material_no_2] : ""; $updateData = [ "ru_material_group_1" => $group1, "ru_material_group_2" => $group2, /* "product_standart_1" => $ruGroup1, "product_standart_2" => $ruGroup2 */ ]; $materialGroupUpdateCount += db("weld_logs") ->where("id", $weldmap->id) ->update($updateData); /* if($say == $commitSize) { DB::commit(); DB::beginTransaction(); $say = 0; } if($weldmap->material_no_1 == "12Х18Н10Т") { dd($group1); } */ $say++; } DB::commit(); } catch (\Throwable $th) { Log::error($th->getMessage()); dump($th->getMessage()); DB::rollback(); } //dump("$materialGroupUpdateCount material group update"); Log::debug("$materialGroupUpdateCount material group update"); //} ?>