When working with belongsToMany and pivot tables, you can create extra columns in the pivot table. Then, use wherePivot() and orderByPivot() to create a separate relationship function in the Model, already filtered/ordered the way you need.
app/Models/User.php:
public function roles(): BelongsToMany{ return $this->belongsToMany(Role::class) ->withPivot('active') ->withTimestamps();} public function latestActiveRoles(): BelongsToMany{ return $this->roles() ->wherePivot('active', 1) ->orderByPivot('created_at', 'desc');}
Some Controller:
$users = User::with('latestActiveRoles')->get();
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
How to Build Laravel 13 API From Scratch
30 lessons
1 h 23 min
[FREE] Laravel 13 for Beginners: 3 Demo Projects
5 lessons
29 min
Livewire v3 to v4: Changes You Need to Know
7 lessons
31 min