Вызов неопределенного метода stdClass :: count () в laravel - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь разбить на страницы свой ответ JSON, но получаю такую ​​ошибку

Вызов неопределенного метода stdClass :: count ()

Мой JSON ответ из Laravel API с помощью жадности ......

вот мой код контроллера

public function index()
{
    $response =  $this->client->get('getUserIndex')->getBody();
    $content = json_decode($response->getContents());
    $total = $content->count();
    $paginationRecord = CollectionPaginate::paginate($content, $total, '15');
    return view('configuration.comuserprofiles.ComUserProfilesList', ['paginationRecord' => $paginationRecord->data]);
}

Ответы [ 2 ]

5 голосов
/ 18 февраля 2020
$content = json_decode($response->getContents());
$total = $content->count();

Я не совсем уверен, почему вы думаете, что результат json_decode будет иметь метод count? Декодирование JSON всегда приводит к универсальному объекту c (stdClass), поскольку интерпретатор PHP не может знать, что он представляет доступный класс.

Метод -> count доступен в Countable реализации (такие как ArrayCollection). Если вы ожидаете класса Countable, то вы можете создать фабрику для создания объекта из JSON или попробовать преобразовать stdClass в ArrayCollection.

В противном случае, если ваши данные JSON являются допустимым массивом, вы можете попытаться использовать

$decoded = json_decode($data, true)

, то есть он будет декодировать его в массив, а не в объект, что позволяет вам делать

count($decoded)
3 голосов
/ 18 февраля 2020

$ content - это объект, а не коллекция или массив, который вы можете использовать php count метода с массивом get $ total

Пожалуйста, измените на

 public function index()
        {


            $response =  $this->client->get('getUserIndex')->getBody();
            $content = json_decode($response->getContents(),true );
            $total = count($content);
            $paginationRecord = CollectionPaginate::paginate($content, $total, '15');
            return view('configuration.comuserprofiles.ComUserProfilesList', ['paginationRecord' => $paginationRecord->data]);

}
...