У меня проблема с отображением клиентской части таблицы, но возвращаемое количество строк составляет около 2,5 тыс. Записей. Модель имеет отношение «многие ко многим» с моделью предложения через таблицу мостов / сводок с примерно 7k строк:
public function sentences()
{
return $this->belongsToMany(Sentence::class)->withTimestamps();
}
Я пытаюсь предварительно загрузить предложения с помощью $entries = Entry:::with('sentences')->get();
, но это генерирует запрос с 2,5 тыс. идентификаторов в нем where entry_sentence.entry_id in (1, 2, 3, 4, 5, 7, ..., 2462, 2463, 2464)
.
Этот сгенерированный запрос выполняется примерно за 0,06 с на моей локальной машине. Но создание коллекции занимает около 8 секунд, что, по-моему, связано с увлажнением? Без предварительной загрузки это очень быстро, но затем я сталкиваюсь с n + 1 проблемами, зацикливающимися на моих строках.
Я вынужден либо выполнять «сырые» запросы DB :: table () без Eloquent или нумерации страниц (и таким образом, фильтрация на стороне сервера и т. д.)? Каков разумный предел для загруженных отношений? Кажется, я нигде не могу найти совета по этому вопросу. Я использую Datatables во внешнем интерфейсе, и их эмпирическое правило делало AJAX до примерно 5 тыс. Строк, тогда вы должны рассмотреть вместо этого разбиение на страницы на стороне сервера.