ฉันกำลังดำเนินการตรวจสอบสิทธิ์ของผู้ใช้เพื่อตรวจสอบว่าพวกเขาสามารถดูเพจได้หรือไม่ สิ่งนี้เกี่ยวข้องกับการส่งคำขอผ่านมิดเดิลแวร์ก่อน
ปัญหาที่ฉันมีคือฉันกำลังทำสำเนาแบบสอบถามฐานข้อมูลเดียวกันในมิดเดิลแวร์และในคอนโทรลเลอร์ก่อนที่จะส่งคืนข้อมูลไปยังมุมมองนั้นเอง
นี่คือตัวอย่างของการตั้งค่า
- route.php
Route::get('pages/{id}', [
'as' => 'pages',
'middleware' => 'pageUser'
'uses' => 'PagesController@view'
]);
- PageUserMiddleware.php (คลาส PageUserMiddleware)
public function handle($request, Closure $next)
{
//get the page
$pageId = $request->route('id');
//find the page with users
$page = Page::with('users')->where('id', $pageId)->first();
//check if the logged in user exists for the page
if(!$page->users()->wherePivot('user_id', Auth::user()->id)->exists()) {
//redirect them if they don't exist
return redirect()->route('redirectRoute');
}
return $next($request);
}
- PagesController.php
public function view($id)
{
$page = Page::with('users')->where('id', $id)->first();
return view('pages.view', ['page' => $page]);
}
อย่างที่คุณเห็นการPage::with('users')->where('id', $id)->first()
ทำซ้ำทั้งในมิดเดิลแวร์และคอนโทรลเลอร์ ฉันต้องการส่งผ่านข้อมูลจากที่หนึ่งไปยังอีกที่หนึ่งเพื่อไม่ให้ซ้ำกัน