Можем ли мы получить общее количество записей и первую запись только в одном красноречивом запросе? - PullRequest
0 голосов
/ 30 сентября 2019

Можем ли мы получить общее количество записей и первую запись только в одном красноречивом запросе?

Я знаю, что мы можем получить общее количество записей с помощью приведенных ниже красноречивых запросов:

1. Model::count();

2. Collection Method
   Model::all()->count();

И мы можем получить первую запись, подобную этой:

Model::first();

У меня есть однарешение для того же т.е.

$data = Model::all();

1. $count = count($data);
2. $count = $data->count();

и для первого ряда / данных

1. $firstRecord = $data[0];
2. $firstRecord = $data->first();

1 Ответ

1 голос
/ 30 сентября 2019

Когда вы создаете запрос, Laravel под капотом создает новый экземпляр построителя запросов с помощью метода newQuery(), этот запрос может использоваться повторно столько раз, сколько вы хотите


$query = Model::where('...')->whereHas('...')->orderBy('...');

[
  'count' => $query->count(),
  'collection' => $query->get(),
  'first' => $query->first()
]

Нечто подобное происходит и с методом LengthAwarePaginator paginate(). Посмотрите исходный код .

...