Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
87.50% covered (warning)
87.50%
14 / 16
88.89% covered (warning)
88.89%
8 / 9
CRAP
0.00% covered (danger)
0.00%
0 / 1
Builder
87.50% covered (warning)
87.50%
14 / 16
88.89% covered (warning)
88.89%
8 / 9
10.20
0.00% covered (danger)
0.00%
0 / 1
 __call
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 scope
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 orderByScore
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 only
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 mode
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 inNaturalLanguageMode
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 withQueryExpansion
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 inBooleanMode
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 count
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace Baril\Sqlout;
4
5use Closure;
6use Laravel\Scout\Builder as ScoutBuilder;
7
8class Builder extends ScoutBuilder
9{
10    public const NATURAL_LANGUAGE = 'in natural language mode';
11    public const QUERY_EXPANSION = 'in natural language mode with query expansion';
12    public const BOOLEAN = 'in boolean mode';
13
14    /**
15     * The search mode (one of the consts above).
16     *
17     * @var string
18     */
19    public $mode;
20
21    /**
22     * The array of scopes that will be applied to the model query.
23     *
24     * @var array
25     */
26    public $scopes = [];
27
28    public function __call($method, $parameters)
29    {
30        if (static::hasMacro($method)) {
31            return parent::__call($method, $parameters);
32        }
33
34        $this->scopes[] = [$method, $parameters];
35        return $this;
36    }
37
38    /**
39     * @deprecated Will be removed in next major version, use Scout's $builder->query($callback) instead.
40     */
41    public function scope(Closure $callback)
42    {
43        $this->scopes[] = $callback;
44        return $this;
45    }
46
47    /**
48     * Order the query by score.
49     *
50     * @param  string  $direction
51     * @return $this
52     */
53    public function orderByScore($direction = 'desc')
54    {
55        return $this->orderBy('_score', $direction);
56    }
57
58    /**
59     * Restrict the search to the provided field(s).
60     *
61     * @param string|array|\Illuminate\Contracts\Support\Arrayable $fields
62     * @return $this
63     */
64    public function only($fields)
65    {
66        return parent::where('field', $fields);
67    }
68
69    /**
70     * Switches to the provided mode.
71     *
72     * @param string $mode
73     * @return $this
74     */
75    public function mode($mode)
76    {
77        $this->mode = trim(strtolower($mode));
78        return $this;
79    }
80
81    /**
82     * Switches to natural language mode.
83     *
84     * @param string $mode
85     * @return $this
86     */
87    public function inNaturalLanguageMode()
88    {
89        return $this->mode(static::NATURAL_LANGUAGE);
90    }
91
92    /**
93     * Switches to natural language mode with query expansion.
94     *
95     * @param string $mode
96     * @return $this
97     */
98    public function withQueryExpansion()
99    {
100        return $this->mode(static::QUERY_EXPANSION);
101    }
102
103    /**
104     * Switches to boolean mode.
105     *
106     * @param string $mode
107     * @return $this
108     */
109    public function inBooleanMode()
110    {
111        return $this->mode(static::BOOLEAN);
112    }
113
114    /**
115     * Returns the total number of hits
116     *
117     * @return int
118     */
119    public function count()
120    {
121        return $this->engine()->getTotalCount(
122            $this->engine()->search($this)
123        );
124    }
125}