Люмен не возвращает данные, когда из всех стран - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь получить список всех стран в lumen api, но когда я возвращаю все данные, подобные этим

 echo json_encode([
            'success' => true,
            'data' => $results
        ]);
or

 return json_encode([
            'success' => true,
            'data' => $results
        ]);

or

 return response([
            'success' => true,
            'data' => $results
        ]);

i just get nothing no data no error

я получаю данные только тогда, когда я ограничиваю (15)

здесь моя функция, чтобы получить список стран

        $output = [];
        $database = \DB::table('country_t')
            ->select(['nameX3'])->get();

        foreach ($database as $item) {
            $name = $item->nameX3;
            $toLowerCase = strtolower(trim($name));
            $urlName = str_replace(' ', '-', $toLowerCase);

            $output[] = [
                'name' => $item->nameX3,
                'url' => $urlName . '-simcards',
            ];
        }

        return response([
            'success' => true,
            'data' => $output
        ]);

Так что эта функция не возвращает ничего, кроме как когда я dd($output); or limit(15)

Пожалуйста, помогите

Заранее спасибо.

1 Ответ

1 голос
/ 25 апреля 2020

Благодаря комментарию @porloscerros, я смог получить хотя бы ошибку. После того, как я использовал return response()->json(['success' => true, 'data' => $output]);, я получил сообщение о том, что Malformed UTF-8 characters, possibly incorrectly encoded.

Проблема в том, что данные, которые кодируются json_encode, содержат даже не-utf8 символы, такие как русские слова и т. Д. c.

Чтобы решить эту проблему, я создал функцию, которая будет кодировать эти данные, используя mb_convert_encoding , поэтому мне также пришлось заставить его обрабатывать даже многомерный массив


    function toUTF8( $mixed ) {
        if (is_array($mixed)) {
            foreach ($mixed as $key => $value) {
                $mixed[$key] = toUTF8($value);
            }
        } elseif (is_string($mixed)) {
            return mb_convert_encoding($mixed, "UTF-8", "UTF-8");
        }
        return $mixed;
    }

  Then calling the function 

  $this->toUTF8($output);

В целом если у вас есть данные, содержащие символы не-utf8, вы должны закодировать данные.

...