gpt4 book ai didi

php - 我怎样才能改进我的查询不得到 "PHP Fatal error: Allowed memory size"(在 laravel 5.2 中排序和分页)

转载 作者:行者123 更新时间:2023-11-29 10:38:39 24 4
gpt4 key购买 nike

我有一些名为海报的项目,其中有日志。我想按照这些日志的创建日期来订购海报。

我有一个名为 Poster 的模型,其中包含以下代码:

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();
}

然后在我的 Controller 中我检索如下结果:

$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 错误。错误甚至在 sortBy 执行之前出现,仅使用 get()

如果我不必使用sortBy,我可以使用paginate()方法,但我不知道是否还有其他方法可以排序。

最佳答案

这是您必须使用的正确查询首先,使用 where first 排除不需要的条目,然后在 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();

关于php - 我怎样才能改进我的查询不得到 "PHP Fatal error: Allowed memory size"(在 laravel 5.2 中排序和分页),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45955795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com