The "when" helper in the query builder is cool!
You can chain conditional clauses to the query without writing if-else statements.
Makes your query very clear:
class RatingSorter extends Sorter{ function execute(Builder $query) { $query ->selectRaw('AVG(product_ratings.rating) AS avg_rating') ->join('product_ratings', 'products.id', '=', 'product_ratings.product_id') ->groupBy('products.id') ->when( $this->direction === SortDirections::Desc, fn () => $query->orderByDesc('avg_rating') fn () => $query->orderBy('avg_rating'), ); return $query; }}
Tip given by @mmartin_joo
Enjoyed This Tip?
Get access to all premium tutorials, video and text courses, and exclusive Laravel resources. Join our community of 10,000+ developers.
Recent Courses on Laravel Daily
AI Agents/IDEs for Laravel: May 2026 (Claude Code, Codex, OpenCode, etc)
7 lessons
52 min
Next.js Basics for Laravel Developers
11 lessons
58 min
Queues in Laravel 13
18 lessons
1 h 12 min read