Isswp101\Persimmon\QueryBuilder\Filters\Filter::makeQuery PHP 메소드

makeQuery() 공개 메소드

{ "bool": { "should": [], "must_not": [] } }
public makeQuery ( ) : array
리턴 array
    public function makeQuery()
    {
        $query = $this->query($this->getValues());
        $map = [Filter::MERGE_AND => 'must', Filter::MERGE_OR => 'should'];
        if ($this->isInclude()) {
            if ($this->getLogicalOperator() == Filter::MERGE_AND) {
                $query = ['bool' => ['must' => [$query]]];
            } elseif ($this->getLogicalOperator() == Filter::MERGE_OR) {
                $query = ['bool' => ['should' => [$query]]];
            }
        } elseif ($this->isExclude()) {
            $mergeOperator = $map[$this->getLogicalOperator()];
            $query = ['bool' => [$mergeOperator => [['bool' => ['must_not' => [$query]]]]]];
        } elseif ($this->isOff()) {
            $query = [];
        }
        foreach ($this->getLinkedFilters() as $filter) {
            $extraQuery = $filter->makeQuery();
            //            if ($filter->isInclude()) {
            if ($this->getLogicalOperator() == Filter::MERGE_AND) {
                $query = $this->mergeBoolQuery($query, $extraQuery, 'must');
            } elseif ($this->getLogicalOperator() == Filter::MERGE_OR) {
                $query = $this->mergeBoolQuery($query, $extraQuery, 'should');
            }
            //            }
            //            elseif ($filter->isExclude()) {
            //                $query = $this->mergeBoolQuery($query, $extraQuery, 'must_not');
            //            }
        }
        return $query;
    }