【发布时间】:2021-06-03 00:52:36
【问题描述】:
我的请求表中有 +30K 项,因此我决定对显示用户请求的页面进行后端分页。问题是每个用户都没有查看所有请求的权限,这取决于很多因素,我创建了一个函数来返回用户是否有权查看请求。
问题在于处理中的请求我必须将处理中的每个请求传递给函数以获得许可(处理请求是一小组项目)。所以我在处理请求时使用了过滤器功能,它给了我 10 个项目的集合。现在我想将可以是 +10K 项目的已关闭请求的大量项目与正在处理的项目合并,并使用分页功能。
我该怎么做?
此功能将解释更多我想说的内容:
public function getRequests(){
$closedRequests = request::join('request_logs', 'request_logs.request_id', '=', 'requests.id')
->select("requests.id", "requests.user_id", "requests.form_type", "requests.created_at", "requests.request_status")
->whereNotIn('request_status', [-2, 0])
->where('request_logs.user_id', Auth::user()->id);
$processingRequests = request::select("requests.id", "requests.user_id", "requests.form_type", "requests.created_at", "requests.request_status")
->where('request_status', 0)
->get()
->filter(function ($request) {
return FormsController::checkUserPermissionToConsultForm($request, true);
});
$closedRequests = $closedRequests->union($processingRequests)
->orderBy('created_at', 'desc')
->paginate(5);
return $closedRequests;
}
上面的函数是我试图做的,但它会产生一个错误提示
Call to a member function getBindings() on array
【问题讨论】:
标签: laravel performance vue.js pagination inertiajs