这是我的代码:
$role_id = Auth::user()->role_id;
$related = Page::where('path', $request->path())->where('method', $_SERVER["REQUEST_METHOD"])->first()->related;
$pages = Page::where('related', $related)->get();
foreach ($pages as $page){
$accessGiven = page_role::where('role_id', $role_id)->where('page_id', $page->id)->first();
if ( sizeof($accessGiven) > 0 ) {
return $next($request);
}
}
return redirect('/');
它在逻辑上运行良好,但对于庞大的数据集来说它有点慢。你知道,它实际上是一个中间件,将在大多数请求之前执行。
无论如何,我想我可以将第2行和第3行结合起来并对它们进行一次查询。知道我该怎么办?
答案 0 :(得分:3)
试试这个:
在你的页面模型中:
"react-redux": "^5.0.6"
然后
public function relatedPages(){
return $this->hasMany(self::class, 'related', 'related');
}
答案 1 :(得分:-1)
看看这个例子(我没有测试过):
$requestPath = $request->path();
$serverMethod = $_SERVER["REQUEST_METHOD"];
$pages = Page::where('related', function($query) use($requestPath,$serverMethod) {
$query->where('path', $requestPath )->where('method',
$serverMethod)->first()->related; }
)->get()