$modules = Role::with(['rights' => function ($q) { return $q->with('module'); }])->where('id', $user->role_id)->get();
Может ли кто-нибудь помочь с этим условием, не работая с оператором where?
Вы не можете вернуться внутрь отношения внутри замыкания with().
with()
Вместо этого вы можете использовать Nested Eager Loading для этого.
$modules = Role::where('id', $user->role_id) ->with('rights.module') ->get();