我们能否在同一个 eloquent 查询中获取总记录数和第一条记录?

Can we get the total record count and the first record only in the same eloquent query?

我们可以在同一个eloquent查询中只得到总记录数和第一条记录吗?

我知道我们可以通过以下 eloquent 查询获得总记录:

1. Model::count();

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

我们可以这样得到第一条记录:

Model::first();

我有一个相同的解决方案,即

$data = Model::all();

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

第一个 row/data

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

当您创建查询时,Laravel 在后台使用方法 newQuery() 创建查询生成器的新实例,此查询可以重复使用任意多次


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

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

LengthAwarePaginatorpaginate() 方法也会发生类似的情况。看看 source code.