map(function ($message) use ($columns) { $data = $message->message_data; // Add code to data to simplify algorithm $data[self::CODE_COLUMN_NAME] = $message->code; $result = []; foreach ($columns as $column) { $result[$column] = isset($data[$column]) ? $data[$column] : ''; } return $result; })->toArray(); } /** * getColumns * * code, default column + all existing locales * * @return array */ public static function getColumns() { return array_merge([ self::CODE_COLUMN_NAME => self::CODE_COLUMN_NAME, Message::DEFAULT_LOCALE => self::DEFAULT_COLUMN_NAME, ], Locale::lists(self::CODE_COLUMN_NAME, self::CODE_COLUMN_NAME)); } }