DEV Community

Discussion on: Pipeline Pattern in Laravel

Collapse
 
rabeeaali profile image
Rabeea Ali • Edited

Another approach for this example is:

in PostController

public function index(Request $request)
{
     $posts = Post::query()
            ->postFilter()
            ->get();

     return view('demo', compact('posts'));
}
Enter fullscreen mode Exit fullscreen mode

in Post model

public function scopePostFilter($query)
{
       $query->when(
            request('active'),
            fn ($query) => $query->where('active', request('active'))
        );

        $query->when(
            request('sort'),
            fn ($query) => $query->orderBy('title', request('sort'));
        );
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
abrardev99 profile image
Abrar Ahmad

Nice abstractions.