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

kuns25's avatar

Laravel Slow Wherehas Query in where sub query

I am trying to achieve the following code, my ajax is taking more than 1.50 minutes to respond, please guide me where I am going wrong

		$members = (new Member)->newQuery();
		$members->with('address');

		if ($request->filled('search')) {

			$search = $request->search;

			$members->where(function ($q) use ($search) {
				$q
				->Where('name', 'LIKE', '%' . $search . '%')
				->orWhere('mode_of_transport', 'LIKE', '%' . $search . '%')
				->orWhereHas('address', function ($query) use ($search) {
					return	$query->where('street_address', 'like', '%' . $search . '%');
				}); 
			});
		} 

when I split these two into individual code as follows I am getting responses in 500 -800 ms so i don't think issue is of n+1 or indexing

// response in 800 ms
$members->WhereHas('address', function ($query) use ($search) {
				return	$query->where('street_address', 'like', '%' . $search . '%');
			});
// response in 500 ms
			$members->Where('name', 'LIKE', '%' . $search . '%')
			->orWhere('mode_of_transport', 'LIKE', '%' . $search . '%');

Thanks in advance

0 likes
7 replies
Sinnbeck's avatar

First off, all methods start with lowercase letters like where()and whereHas()

Secondly, I suggest installing debug bar or clockwork, to see the actual query timing, and what the query looks like.

1 like
kuns25's avatar

@Sinnbeck I've installed debugbar , but its not capturing ajax call on couple of pages for some reason , I've logged the queries , following SQL statement is executed

  0 => 
  array (
    'query' => 'select * from `members_master` where (`name` LIKE ? or `mode_of_transport` LIKE ? or exists (select * from `member_addresses` where `members_master`.`id` = `member_addresses`.`member_id` and `street_address` like ?)) and `members_master`.`deleted_at` is null order by `created_at` desc limit 50',
    'bindings' => 
    array (
      0 => '%baner%',
      1 => '%baner%',
      2 => '%baner%',
    ),
    'time' => 103946.41,
  ),

Sinnbeck's avatar

@kuns25 You should be able to find it by clicking the dropdown in the top right corner (it is next to a folder icon)

1 like
kuns25's avatar

@Sinnbeck thanks I'll try clockwork, is there any issue with my query which is making it slow

Sinnbeck's avatar

@kuns25 It should be fine, as such. I have something similar and it loads in milliseconds. Wildcard searches are not that fast, but 1.5 minut is crazy

1 like

Please or to participate in this conversation.