当我只存储状态代码时,如何根据用户的全名输入搜索状态?

我有以下雄辩的查询。

$profiles = Profile::where('full_name','LIKE','%'.$query.'%')->orWhere('area_description','LIKE','%'.$query.'%')->orWhere('state','LIKE','%'.$query.'%')->paginate(10);

如果您提供 CA、OH、NJ 等内容,则根据州代码进行哪些搜索就好了……

但它需要这个查询需要能够接收完整的州名作为输入,例如加利福尼亚、俄亥俄、新泽西等......

但是,我没有将完整的州名存储在数据库中。有什么方法可以在应用程序中硬编码人行横道表吗?我真的不希望在项目中此时不必更改数据库结构。


守着星空守着你
浏览 93回答 2
2回答

小怪兽爱吃肉

考虑到您有一组状态代码和状态名称:$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);

青春有我

如果需要,您可以将状态全名存储在应用程序配置中,例如,我将全名存储在state.php配置文件夹中,如下所示:return [    'CA' => 'California,]然后我可以通过这样的键码搜索全名:$stateFullname = config('state');$stateFullname[$profile->state];在这里阅读更多
打开App,查看更多内容
随时随地看视频慕课网APP