Неустранимая ошибка: вызов неопределенного метода Google\Cloud\Firestore\QuerySnapshot::count()

Я хочу передать 5000 пользовательских документов из Firerstore в таблицу HTML с помощью Laravel, но получаю сообщение об ошибке «вызов неопределенного метода Google\Cloud\Firestore\QuerySnapshot::count()». Пожалуйста, в чем я ошибаюсь:

public function history(Request $request)
    {
        $history = app('firebase.firestore')->database()->collection($this->tablenamePayment);
        $lastVisible = null;
        if ($request->input('last_visible')) {
            $lastVisible = $history->document($request->input('last_visible'))->snapshot();
        }
        $query = $history->startAt($lastVisible ? [$lastVisible] : []);
        $documents = $query->limit(2000)->documents();
        $data = [];
        foreach ($documents as $document) {
            $data[] = [
                 'id' => $document->id(),
                'name' => $document->get('name'),
                'email' => $document->get('email'),
            ];
        }
        $nextVisible = null;
        if ($documents->count() === 2000) {
            $nextVisible = $documents->last()->id();
        }
     return view('admin.payment-history', compact('data', 'nextVisible'));
    }
// View (Blade template):

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
        </tr>
    </thead>
    <tbody>
        @foreach($data as $document)
            <tr>
                <td>{{ $document['id'] }}</td>
                <td>{{ $document['name'] }}</td>
                <td>{{ $document['email'] }}</td>
            </tr>
        @endforeach
    </tbody>
</table>

@if ($nextVisible)
    <a href = "{{ route('firestore', ['last_visible' => $nextVisible]) }}">Next Page</a>
@endif

вы можете просто заменить $documents->count() на count($data)

N69S 08.07.2024 14:03

это дало мне сообщение об ошибке «Вызов неопределенного метода Google\Cloud\Firestore\QuerySnapshot::last()», пожалуйста, что еще я могу сделать, чтобы решить эту проблему, пожалуйста

Tunde Adam 08.07.2024 14:27

пожалуйста, я получил эту ошибку «Вызов неопределенного метода Google\Cloud\Firestore\QuerySnapshot::end()»

Tunde Adam 08.07.2024 14:36

Я просто добавлю это в ответ

N69S 08.07.2024 14:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
4
4
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы получаете следующую ошибку:

Вызов неопределенного метода Google\Cloud\Firestore\QuerySnapshot::count()

Потому что класс QuerySnapshot не содержит count() функции. С другой стороны, класс Query содержит функцию count(). Поэтому, если вы хотите подсчитать документы, возвращаемые запросом, вызовите count() непосредственно на объекте Query.

пожалуйста, как это сделать, пожалуйста

Tunde Adam 08.07.2024 14:23
Ответ принят как подходящий

Как упоминалось @AlexMamo, вы работаете не с коллекцией laravel, а с экземпляром QuerySnapshot. Методы count() и last() не существуют в этом классе (или определены с другим именем, например, вместо count() вам нужно вызвать size()).

Вы уже зациклились на нем и у вас есть удобный $data для выполнения тех же действий с

$nextVisible = null;
if (count($data) === 2000) {
    $lastEntry = end($data);
    $nextVisible = $lastEntry['id'];
}

Пожалуйста, он указал на ошибку в моем представлении (шаблон Blade) «Маршрут [firestore] не определен.»..

Tunde Adam 08.07.2024 19:20

@SamuelEmeh это еще одна ошибка, не связанная с заданным вами вопросом. В любом случае вы понимаете, что так продолжать нельзя и вам нужно научиться разрабатывать/отлаживать код или хотя бы кодировать на laravel.

N69S 09.07.2024 10:03

Другие вопросы по теме