Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

nizam0786's avatar

Best way of performing eloquent query when request exists and has a relationship matching the request.

Hi guys,

I am trying to perform a query when a request exists but its quite slow to load so wanted to know if there was a better and quicker way of doing it.


$users = Travellers::select([ 'id', 'firstname', 'surname', 'updated_at' ])->when($request->has('school'), function ($query) use ($request) { $query->has('passes.school')->whereHas('passes', function ($query) use ($request) { $query->where('school_id', $request->get('school')); } }); });

Thanks in advance.

0 likes
1 reply
nizam0786's avatar
nizam0786
OP
Best Answer
Level 10

I have speeded it up by modifying it to:


$users = Travellers::select([ 'id', 'firstname', 'surname', 'updated_at' ])->when($request->has('school'), function ($query) use ($request) { $query->has('passes.school')->whereHas('passes.school', function ($query) use ($request) { $query->where('id', $request->get('school')); } }); });

but there is there a better way of doing it?

Thanks

Please or to participate in this conversation.