Как использовать лимит и смещение после get () в Laravel - PullRequest
1 голос
/ 14 апреля 2020

Я хочу получить все записи при первом подключении к БД, а затем получить количество этих записей.

$journeyItems = JourneyItem::whereIn('as_journey_id', $journeyIds->toArray())
    ->whereHas('content', function (Builder $query) {
        $query->whereIn('as_content_type_id', [6, 7]);
    })->get();
$totalRecords = $journeyItems->count(); // count=15
$journeyItems = $journeyItems->offset($start)
    ->limit($limit);

dd(journeyItems); // Error 

Подсветить \ Database \ Eloquent \ Collection :: offset не В результате: он не работал

Как я могу редактировать?

Я полагаю, что приведенный ниже метод не является правильным

           $journeyItems = JourneyItem::whereIn('as_journey_id', $journeyIds->toArray())
                ->whereHas('content',function(Builder $query) {
                    $query->whereIn('as_content_type_id', [ 6, 7]);
                })
                ->offset($start)
                ->limit($limit)
                ->get();
            $totalRecords = JourneyItem::whereIn('as_journey_id', $journeyIds->toArray())
                ->whereHas('content',function(Builder $query) {
                    $query->whereIn('as_content_type_id', [ 6, 7]);
                })
                ->count();

1 Ответ

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

$journeyItems - это коллекция, поэтому используйте skip и take . offset и limit являются методами построения запросов.

$journeyItems = $journeyItems->skip($start)->take($limit);

В качестве альтернативы вы можете использовать slice :

$journeyItems = $journeyItems->slice($start, $limit);
...