Laravel: использование 'pluck' на тысячах строк приводит к ошибке 500 - PullRequest
0 голосов
/ 17 октября 2018

Не могу понять, почему это происходит.К сожалению, все, что выкладывает Laravel - это просто стандартная страница ошибок 500 Chromes.

У меня есть Front End таблица, в которой пользователь может искать контракты.У меня тысячи и тысячи строк.Список загружает (без фильтров) около 22 000 строк, разбитых на страницы.Я использую плагин под названием DataTables для создания таблиц.Когда я отправляю ответ обратно во внешний интерфейс с таблицей, я также хочу извлечь все идентификаторы из контракта и отправить его вместе с данными DataTable, что можно сделать с помощью параметра DataTables ->with().

Пример:

return DataTable::eloquent($contracts)
->with(['all_ids' => $contracts->get()->pluck('id')])

Проблема в том, что ошибка 500 постоянно возникает в новом списке.НО, если бы я отфильтровал список примерно до 500 или около того строк, он не дал бы мне ответа без проблем со всеми 500 отловленными идентификаторами.

Кажется, что ошибка 500 проистекает из выдернутых 22 000.К сожалению, DataTables не отправляет обратно все идентификаторы в списке, только идентификаторы с разбивкой по страницам (текущий вид).Это моя работа, чтобы получить все возможные идентификаторы во всем наборе результатов, НО это вызывает некоторые головные боли.

Любые идеи о том, как я могу заставить это работать лучше?

1 Ответ

0 голосов
/ 17 октября 2018

Попробуйте:

return DataTable::eloquent($contracts)
    ->with(['all_ids' => $contracts->get('id')]);

get() принимает список имен столбцов, которые будут включены в select часть запроса.Если это недостаточно эффективно, проверьте, есть ли у DataTable некоторый API для чанкования / разбиения на страницы, извлекающий все эти идентификаторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...