Fix search and psql like queries need to be ilike for case insensitivity

This commit is contained in:
2024-07-06 22:56:51 +10:00
parent 61fe84498a
commit 70e94bf6e6
7 changed files with 33 additions and 33 deletions

View File

@@ -180,10 +180,10 @@ class Account extends Model implements IDs
$query->where('id','like','%'.$term.'%');
} else {
$query->where('company','like','%'.$term.'%')
->orWhere('address1','like','%'.$term.'%')
->orWhere('address2','like','%'.$term.'%')
->orWhere('city','like','%'.$term.'%');
$query->where('company','ilike','%'.$term.'%')
->orWhere('address1','ilike','%'.$term.'%')
->orWhere('address2','ilike','%'.$term.'%')
->orWhere('city','ilike','%'.$term.'%');
}
return $query;

View File

@@ -38,7 +38,7 @@ class Invoice extends Model implements IDs
protected $casts = [
'created_at' => 'datetime:Y-m-d',
'due_at' => 'datetime:Y-m-d',
'reminders'=>'json',
'reminders' => 'json',
'_paid_at' => 'datetime:Y-m-d',
];

View File

@@ -530,18 +530,18 @@ class Service extends Model implements IDs
return $query->select('services.*')
->where('services.id','like',$t)
->leftJoin('service_broadband',['service_broadband.service_id'=>'services.id'])
->orWhere('service_broadband.service_number','like',$t)
->orWhere('service_broadband.service_address','like',$t)
->orWhere('service_broadband.ipaddress','like',$t)
->orWhere('service_broadband.service_number','ilike',$t)
->orWhere('service_broadband.service_address','ilike',$t)
->orWhere('service_broadband.ipaddress','ilike',$t)
->leftJoin('service_phone',['service_phone.service_id'=>'services.id'])
->orWhere('service_phone.service_number','like',$t)
->orWhere('service_phone.service_address','like',$t)
->orWhere('service_phone.service_number','ilike',$t)
->orWhere('service_phone.service_address','ilike',$t)
->leftJoin('service_domain',['service_domain.service_id'=>'services.id'])
->orWhere('service_domain.domain_name','like',$t)
->orWhere('service_domain.domain_name','ilike',$t)
->leftJoin('service_email',['service_email.service_id'=>'services.id'])
->orWhere('service_email.domain_name','like',$t)
->orWhere('service_email.domain_name','ilike',$t)
->leftJoin('service_host',['service_host.service_id'=>'services.id'])
->orWhere('service_host.domain_name','like',$t);
->orWhere('service_host.domain_name','ilike',$t);
}
/* ATTRIBUTES */

View File

@@ -189,27 +189,27 @@ class User extends Authenticatable implements IDs
{
// Build our where clause
// First Name, Last name
if (preg_match('/\ /',$term)) {
if (preg_match('/\s+/',$term)) {
[$fn,$ln] = explode(' ',$term,2);
$query->where(function($query1) use ($fn,$ln,$term) {
$query1->where(function($query2) use ($fn,$ln) {
return $query2
->where('firstname','like','%'.$fn.'%')
->where('lastname','like','%'.$ln.'%');
->where('firstname','ilike','%'.$fn.'%')
->where('lastname','ilike','%'.$ln.'%');
});
});
} elseif (is_numeric($term)) {
$query->where('users.id','like','%'.$term.'%');
} elseif (preg_match('/\@/',$term)) {
$query->where('email','like','%'.$term.'%');
} elseif (preg_match('/@/',$term)) {
$query->where('email','ilike','%'.$term.'%');
} else {
$query
->Where('firstname','like','%'.$term.'%')
->orWhere('lastname','like','%'.$term.'%');
->Where('firstname','ilike','%'.$term.'%')
->orWhere('lastname','ilike','%'.$term.'%');
}
return $query;