select([ 'id', 'name', 'description', 'sell_price', 'display_attributes', 'numeric_attributes' ]) ->get() ->map(function ($item) { // 过滤numeric_attributes,只保留白名单中的属性 $numericAttributes = null; if ($item->numeric_attributes) { $numericAttributes = NumericAttributesWhitelist::filter($item->numeric_attributes); } return [ 'id' => $item->id, 'name' => $item->name, 'description' => $item->description, 'sell_price' => $item->sell_price, 'display_attributes' => $item->display_attributes, 'numeric_attributes' => $numericAttributes ]; }) ->toArray(); // 准备完整数据,包含生成时间 $data = [ 'generated_ts' => time(), 'items' => $items ]; return $data; } catch (\Exception $e) { Log::error('Generate items.json failed: ' . $e->getMessage()); return false; } } public function handle() { if (ItemJsonConfig::getData([], true)) { $this->info('Successfully generated items.json with timestamp'); } else { $this->error('Failed to generate items.json'); } } }