Получить общую коллекцию - PullRequest
0 голосов
/ 08 мая 2020

Как я могу получить общее количество записей после того, как я использовал skip и take из запроса?

Рабочие коды:

$records = Model::where('active', 1)
                 ->skip(($page -1 ) * $max)
                 ->take($max);
// List of records
$data = $records->get()

//Total of all records including the skip records
$total = $records->paginate()->total();

Я хочу это, но коды нет Рабочий:

$records = Model::where('active', 1)
                 ->skip(($page -1 ) * $max)
                 ->take($max)->get();

//Not Working 
$total = $records->paginate()->total();

//Not Working 
$total = $records->total();

//Not Working wrong result
$total = $records->count();

Как получить все общие записи в коллекции?

Ответы [ 3 ]

3 голосов
/ 08 мая 2020

Используйте метод paginate() непосредственно на вашей модели:

$records = Model::where('active', 1)->paginate($recordsPerPage);

Это вернет экземпляр LengthAwarePaginator, который имеет множество полезных методов:

https://laravel.com/api/7.x/Illuminate/Contracts/Pagination/LengthAwarePaginator.html

Например, $records->total(), $records->perPage(), и т. Д. c.

1 голос
/ 08 мая 2020

попробуйте это

$records = Model::where('active', 1)
                 ->skip(($page -1 ) * $max)
                 ->take($max)->get();

$total = count($records);
1 голос
/ 08 мая 2020

В первом примере ваш вызов paginate () находится в построителе запросов ... (Прежде чем вы это сделаете -> get ())

Во втором примере вызов paginate () находится в коллекции, после того, как вы получили свои результаты с помощью -> get ()

$ records - это разные вещи в обоих: во-первых, это построитель запросов, во-вторых, коллекция

...