timezone(); $response = $result['response'] ?? []; if (empty($response)) { return $result; } // 先将所有时区设为无效 Timezone::query()->update(['status' => Timezone::STATUS_NO]); foreach ($response as $code) { // 使用 firstOrCreate 简化代码 $timezone = Timezone::firstOrCreate( ['code' => $code], [ 'code' => $code, 'status' => Timezone::STATUS_YES ] ); // 如果已存在,更新状态 if (!$timezone->wasRecentlyCreated) { $timezone->update(['status' => Timezone::STATUS_YES]); } } return $result; } // 同步国家/地区数据 public static function syncCountry() { $result = app('api-football')->countries(); $response = $result['response'] ?? []; if (empty($response)) { return $result; } // 先将所有国家/地区设为无效 Country::query()->update(['status' => Country::STATUS_NO]); foreach ($response as $item) { // 使用 firstOrCreate 简化代码 $country = Country::firstOrCreate( ['name' => $item['name']], [ 'name' => $item['name'], 'code' => $item['code'], 'flag' => $item['flag'], 'status' => Country::STATUS_YES ] ); // 如果已存在,更新状态和其他字段 if (!$country->wasRecentlyCreated) { $country->update([ 'code' => $item['code'], 'flag' => $item['flag'], 'status' => Country::STATUS_YES ]); } } return $result; } public static function syncLeagues($params = []) { $result = app('api-football')->leagues($params); // $result = json_decode(file_get_contents(storage_path('logs/leagues.log')), true); $response = $result['response'] ?? []; if (empty($response)) { return $result; } // // 先将所有联赛设为无效 // League::query()->update(['status' => League::STATUS_NO]); foreach ($response as $item) { $is_active = League::IS_ACTIVE_NOT; foreach ($item['seasons'] as $season) { // 处理赛季数据 if ($season['current']) { $is_active = League::IS_ACTIVE_YES; } } // 使用 updateOrCreate 简化代码 $league = League::updateOrCreate( ['league_id' => $item['league']['id']], [ 'name' => $item['league']['name'], 'type' => $item['league']['type'], 'logo' => $item['league']['logo'], 'country_name' => $item['country']['name'], 'country_code' => $item['country']['code'], 'country_flag' => $item['country']['flag'], 'seasons' => json_encode($item['seasons'] ?? []), 'is_active' => $is_active, 'last_synced_at' => now(), ] ); // // 如果已存在,更新状态和其他字段 // if (!$league->wasRecentlyCreated) { // $league->update([ // 'name' => $item['league']['name'], // 'type' => $item['league']['type'], // 'logo' => $item['league']['logo'], // 'country_name' => $item['country']['name'], // 'country_code' => $item['country']['code'], // 'country_flag' => $item['country']['flag'], // 'seasons' => json_encode($item['seasons'] ?? []), // 'is_active' => $is_active, // ]); // } } return $result; } }