mysql — Как я могу улучшить свой запрос, чтобы не получать & quot; Неустранимая ошибка PHP: допустимый объем памяти & quot; (Упорядочивание и разбиение на страницы в Laravel 5.2)

У меня есть несколько предметов, которые называются постерами с журналами. Я хочу заказать эти плакаты по дате создания этих журналов.

У меня есть модель под названием Плакат с этим кодом:

class Poster extends Model {

protected $table = 'posters';

public function pos_log_resumenEnviado()
{
return $this->hasMany('App\models\PosterLog', 'pos_id')->where('log', 'Autores de poster enviado')->orWhere('log', 'Resumen de poster modificado')->latest();
}

Затем в моем контроллере я получаю результаты, как это:

$posters = Poster::with('pos_log_resumenEnviado', 'user')->where('state', 'Resumen pendiente de aceptacion')->get();

$posters = $posters->sortBy(function($pos)
{
if( sizeof($pos->pos_log_resumenEnviado) > 0)
return $pos->pos_log_resumenEnviado[0]->created_at;
})->take(1200);

Я получаю все плакаты, а затем заказываю их и беру первые 1200 результатов. Это работает нормально (с низкой производительностью), но теперь я получаю ошибку php, которую я сказал в названии. Ошибка приходит еще до Сортировать по исполнение, только с получить()

Если бы мне не пришлось использовать Сортировать по Я мог бы использовать постраничной () метод, но я не знаю, есть ли другой способ заказать это.

0

Решение

Вот правильный запрос, который вы должны использовать
Сначала используйте где сначала исключить ненужные записи, а затем внутри функции обратного вызова with вы можете отфильтровать результаты, используя eloquent:

$posters = Poster::where('state', 'Resumen pendiente de aceptacion')->with(['pos_log_resumenEnviado' => function($q){
return $q->orderBy('poster_logs.created_at','ASC');
}])->with('user')->get();
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]