'datetime', 'created_at' => 'datetime', 'updated_at' => 'datetime', 'raw' => 'array', ]; public static function storeFromWebhookJson(string|array $json): self { // 當$json是 string 時才做 Json2Arr,否則直接當成已展平的資料用 $data = is_array($json) ? $json : UserFun::Json2Arr($json); // 要儲存的欄位清單 $fields = collect($data)->only([ 'message_message_id', 'message_from_id', 'message_from_is_bot', 'message_from_first_name', 'message_from_last_name', 'message_from_username', 'message_from_language_code', 'message_chat_id', 'message_chat_title', 'message_chat_type', 'message_chat_all_members_are_administrators', 'message_text', 'message_entities_0_offset', 'message_entities_0_length', 'message_entities_0_type', 'token', ])->toArray(); // 處理 message_date (timestamp -> datetime) if (isset($data['message_date'])) { $fields['message_date'] = date('Y-m-d H:i:s', $data['message_date']); } // 原始扁平化資料存入 raw 欄位 $fields['raw'] = $data; return self::updateOrCreate( ['update_id' => $data['update_id']], $fields ); } }