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
 
parminder_kaur_ac7a906959 profile image
parminder kaur

Your approach is specific for only post model. And above Pipeline example in tutorial can be used in multiple contollers.

Collapse
 
rabeeaali profile image
Rabeea Ali

you can make a trait and use it in each model you want

Collapse
 
abrardev99 profile image
Abrar Ahmad

Nice abstractions.