'array', 'raw_data' => 'array', 'seal_raw_data' => 'array', ]; /** * @var array|string[] 定义可搜索字段(可选,可在调用时覆盖) */ public static $searchable = ['id']; /** * 批量更新或插入 * @param array $data * @param array $uniqueKeys * @return int * @throws \Throwable */ public static function bulkUpsert(array $data, array $uniqueKeys = ['batch_no', 'drug_id']): int { if (empty($data)) { return 0; } return DB::transaction(function () use ($data, $uniqueKeys) { $count = 0; foreach (array_chunk($data, 100) as $chunk) { self::upsert( $chunk, $uniqueKeys, // 组合唯一键 array_keys($data[0]) // 要更新的字段 ); $count += count($chunk); } return $count; }); } }