7.5. 代码封装
代码封装
前面的的章节我们完成了商品列表的各项搜索功能,但是我们发现商品列表控制器十分臃肿,里面有大量的代码用于构建 Elasticsearch 的查询,为了让代码布局更合理,同时提高复用性,接下来我们要对 Elasticsearch 的查询做一个简单的封装。
1. 创建查询构造器
我们目前的查询还比较单一,没有必要写一个像 Laravel Query Builder 那种十分灵活的查询构造器,因此只需要做一些简单的封装即可。
首先我们创建一个 ProductSearchBuilder
类:
$ mkdir -p app/SearchBuilders
$ touch app/SearchBuilders/ProductSearchBuilder.php
app/SearchBuilders/ProductSearchBuilder.php
<?php
namespace App\SearchBuilders;
use App\Models\Category;
class ProductSearchBuilder
{
// 初始化查询
protected $params = [
'index' => 'products',
'type' => '_doc',
'body' => [
'query' => [
'bool' => [
'filter'...