Laravel 5.4搜索邮政区域通配符

时间:2017-08-17 12:06:07

标签: php mysql laravel laravel-5 laravel-5.4

我有一个邮政编码区域表,其结构如下:

|id   |post_district   | search        |local_authority   |gov_region   |country |
|31   |BA22            |BA22, BA2*, BA*|South Somerset    |South West   |England |
|32   |BA9             |BA9, BA*       |South Somerset    |South West   |England |

(所有列都是string类型)。搜索列包含邮政编码的可能通配符变体。

我有问题创建一个将传入代码的函数(可能带有通配符,因此搜索)并返回匹配的所有行。

如下所示:

 function SearchPostDistrict($code){
    return DB::table('postcodes_area')->where($code, is_substring($this))->get() //PSEUDO-CODE
 }

如果我可以有一个数组列类型并且只有一个where子句

,这会更简单
->whereIn($code, 'search')

在laravel 5.4中是否有可能拥有某种复杂的查询构建器功能?

或者,我可以返回所有邮政编码区域(其中有2451条记录)。然后遍历每个检查$ code是否是记录搜索变量的子字符串,并自己构建一个我返回的集合。

这会是性能问题吗?这是Laravel的一个我不太了解的一面。这对我有什么影响?

解决方案: 我相信我可以使用

function SearchPostDistrict($code){
    return DB::table('postcodes_area')->where('search', 'LIKE', '%'.$code.'%')->get();
}

1 个答案:

答案 0 :(得分:0)

您可以通过以下任何过滤器找到特定帖子:

$posts = Post::all(); //Send all posts
$posts = Post::where('title','Post Two')->get(); //get title as mentioned
$posts = DB::select('Select * from posts'); //If you want write query then "use DB;" at top of the Controller file
$posts = Post::orderBy('title','desc')->take(1)->get(); // Get one post
$posts = Post::orderBy('title','desc')->get();