updateOrCreate([ 'code' => 'type', 'name' => '普查类型', ], []); foreach ($settings['type'] as $setting) { $s = CategorySetting::query()->updateOrCreate([ 'code' => $setting['id'], 'name' => $setting['name'], 'pid' => $p->id, ], []); if (isset($setting['levels']) && is_array($setting['levels'])) { $l2 = CategorySetting::query()->updateOrCreate([ 'code' => $s['code'], 'name' => 'levels', 'pid' => $s->id, ], []); foreach ($setting['levels'] as $level) { $s = CategorySetting::query()->updateOrCreate([ 'code' => $level['id'], 'name' => $level['name'], 'pid' => $l2->id, ], []); } } if (isset($setting['types']) && is_array($setting['types'])) { $l2 = CategorySetting::query()->updateOrCreate([ 'code' => $s['id'], 'name' => 'types', 'pid' => $s->id, ], []); foreach ($setting['types'] as $level) { $s = CategorySetting::query()->updateOrCreate([ 'code' => $level['id'], 'name' => $level['name'], 'pid' => $l2->id, ], []); } } } } public static function byCodeGetName($code) { return Cache::remember("model:CategorySetting:byCodeGetName:{$code}", Carbon::now()->addDays(1), function () use ($code) { return self::query()->where('code', $code)->value('name') ?? ''; }); } }