Учитывая, что у вас есть массив кода состояния и имени состояния:
$data = [
'AL' => 'Alabama',
'AK' => 'Alaska',
'AZ' => 'Arizona',
'CA' => 'California',
'CO' => 'Colorado'
];
Ввод пользователя
$query = 'ala';
Таким образом, пользовательский поиск 'ala' должен получить два состояния. сначала найдите весь код состояния, связанный с поиском:
$result = array_filter($data, function ($item) use ($query) {
if (stripos($item, $query) !== false) {
return true;
}
return false;
});
$state_codes =array_keys($result);
$state_codes
имеет весь код состояния, связанный с поиском, и теперь вы можете использовать в запросе:
$profiles = Profile::where('full_name','LIKE','%'.$query.'%')
->orWhere('area_description','LIKE','%'.$query.'%')
->orWhereIn('state',$state_codes)
->paginate(10);