1
我正在对正确的MVC进行重构,并将所有业务逻辑移至我的模型。但是,在某些情况下,这会导致显着的性能下降。与存储库访问相比,Laravel集合过滤速度较慢
我的模型“用户”与模型“日志”有着许多关系。我的用户模型中有一个特定的函数,它返回某个日期之间的日志。我过滤收集这样的:
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慢了很多。
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();
}
它可能与Eloquent如何管理检索关系有关。我想保留在我的用户模型中的代码,但不是性能下降。有人知道这个表现的下降究竟是从哪里来的,我该如何解决这个问题?