首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与存储库访问相比,Laravel集合过滤速度慢。

问与存储库访问相比,Laravel集合过滤速度慢。
EN

Stack Overflow用户
提问于 2016-04-24 05:34:32
回答 1查看 2.3K关注 0票数 1

我正在将我的应用程序重构成适当的MVC,并将我所有的业务逻辑转移到我的模型中。然而,在某种情况下,这会导致明显的性能下降。

我的模型‘用户’和模型‘日志’有很多关系。在我的用户模型中有一个函数在某个日期之间返回它的日志。我像这样过滤集合:

代码语言:javascript
复制
public function getLogsBetweenDates($start, $end) {

    $logs = $this->logs
                 ->filter(function($value, $key) use ($start, $end) {
                    return $value->log_date >= $start && $value->log_date <= $end;
            });

    return $logs
}

这是可行的,但比我以前的实现要慢得多,之前的实现是在我的控制器中访问我的LogRepository。

代码语言:javascript
复制
public function getLogsBetweenDateFromUser($start_date, $end_date, $user_id)
{

    $start = Carbon::parse($start_date);
    $end = Carbon::parse($end_date);

    return Log::where('user_id', $user_id)
                 ->where('log_date', '>=' , $start)
                 ->where('log_date', '<=' , $end)
                 ->get();
}

这可能与雄辩如何管理检索关系有关。我希望将代码保留在我的用户模型中,但不希望性能下降。有人知道这个性能下降的确切来源吗?我是如何解决这个问题的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-24 10:36:14

筛选集合意味着从数据库读取所有内容,为每个记录创建对象,然后进行筛选。这是正常的,它需要更多的时间。解决方案,无论架构,是采取第二种方式,使用雄辩的过滤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36819652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档