मैं यह निर्धारित करने के लिए एक उपयोगकर्ता की अनुमति की जांच कर रहा हूं कि वे पृष्ठ देख सकते हैं या नहीं। इसमें पहले कुछ मिडलवेयर के माध्यम से अनुरोध पारित करना शामिल है।
मेरे पास जो समस्या है वह यह है कि मैं डेटा को वापस देखने से पहले मिडलवेयर और कंट्रोलर में एक ही डेटाबेस क्वेरी को डुप्लिकेट कर रहा हूं।
यहाँ सेटअप का एक उदाहरण है;
- मार्गों
Route::get('pages/{id}', [
'as' => 'pages',
'middleware' => 'pageUser'
'uses' => 'PagesController@view'
]);
- PageUserMiddleware.php (वर्ग पृष्ठउपयोगकर्ता सॉफ्टवेयर)
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()
मिडिलवेयर और कंट्रोलर दोनों में दोहराया जाता है। मुझे डुप्लिकेट करने के लिए एक से दूसरे के माध्यम से डेटा पास करने की आवश्यकता है।