Когда я использую paginate для разбивки на страницы, данные вызывают запрос count(*) каждый раз, даже когда я передаю имя столбца, например count(['id']), и запрос count(*) сканирует всю строку в таблице.
Имя таблицы users и 45 столбцов.
Маршрут
Route::get("users", "UsersController@index");
namespace App\Http\Controllers\Api\V1;
class UsersController extends Controller
{
public function index()
{
return User::paginate(10 , ['id']);
}
}
users маршрутЯ устал решать эту проблему любым другим способом или идеей, пожалуйста, дайте мне знать






Не рекомендуется когда-либо прикасаться к файлам поставщиков, вы всегда можете просто переопределить функциональность внутри своей модели, вы также можете передать столбцы, чтобы переопределить getCountForPagination(), и вы также можете передать столбцы simplePaginate(), который не вызывает никакого подсчета!
Чтобы оптимизировать запрос для подсчета и разбивки на страницы, вы можете сделать это следующим образом:
//We will call the query on the model
$program = Program::query()->getQuery();
//count the query by specific columns
$thePaginationCount = $program->getCountForPagination(['id']);
//paginate the results using simplePaginate and select the columns we want:
$thePaginatedProgram = $program->simplePaginate(10, ['id', 'name']);
return 'test: '.$thePaginatedProgram;
Получится так:
select count(`id`) as aggregate from `programs`
select `id`, `name` from `programs` limit 11 offset 0
Как видите, он загружает только то, что мы указываем, и это очень эффективно!
Если вы просто хотите листать страницы без подсчета, вы всегда можете вызвать Model::simplePaginate($amount, [$columns...])
https://laravel.com/docs/9.x/pagination#simple-pagination
Любые идеи по использованию метода paginate(), потому что метод paginate также поддерживается для получения значения $column, в этом методе paginate мы должны передать значение столбца, а затем сделать поддержку первого параметра $column как count($column [0]) мы можем решить это методом paginate laravel.com/docs/9.x/…
что вы имеете в виду, вы уже можете получить доступ к таким моделям foreach($theprogram as $item){ dd($item); }
@NikunjGadhiya, если ваша проблема решена, пожалуйста, отметьте ответ как полный (с помощью галочки) :)
вы используете ( App\Models\User; ) ?! что такое [идентификатор]?