hasMany(DrugReportInfo::class, 'drug_id', 'drug_id') ->where('drug_report_info.batch_no', 'drug_report_ass.batch_no'); } /** * 批量更新或插入 * @param array $data * @param array $uniqueKeys * @return int * @throws \Throwable */ public static function bulkUpsert(array $data, array $uniqueKeys = ['batch_no', 'drug_id','bill_id','bill_detail_id']): int { if (empty($data)) { return 0; } return DB::transaction(function () use ($data, $uniqueKeys) { $count = 0; foreach (array_chunk($data, 100) as $chunk) { try{ $res = DrugReportAss::query()->upsert( $chunk, $uniqueKeys, // 组合唯一键 ['update_time'] // 要更新的字段 ); if (!$res){ log::info('increment_drug_upsert:更新失败:'.$res); } } catch (\Exception $e) { log::info('increment_drug_upsert:'.$e->getMessage()); return $count; } $count += count($chunk); } return $count; }); } }