Code Duplication    Length = 14-14 lines in 8 locations

src/SubqueryMagic/Scopes/SubqueryMagicScope.php 8 locations

@@ 66-79 (lines=14) @@
63
     *
64
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
65
     */
66
    protected function addLeftJoinSubquery($builder)
67
    {
68
        $builder->macro('leftJoinSubquery', function ($builder, $subquery, $alias, \Closure $on) {
69
            /*
70
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
71
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
72
             */
73
            $builder->leftJoin(DB::raw('('.$subquery->toSql().') '.$builder->getQuery()->getGrammar()->wrap($alias)), $on);
74
            //merge bindings from subquery
75
            $this->addBindings($builder, $subquery->getBindings(), 'join');
76
77
            return $builder;
78
        });
79
    }
80
81
    /**
82
     * Add extension to the builder.
@@ 86-99 (lines=14) @@
83
     *
84
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
85
     */
86
    protected function addRightJoinSubquery($builder)
87
    {
88
        $builder->macro('rightJoinSubquery', function ($builder, $subquery, $alias, \Closure $on) {
89
            /*
90
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
91
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
92
             */
93
            $builder->rightJoin(DB::raw('('.$subquery->toSql().') '.$builder->getQuery()->getGrammar()->wrap($alias)), $on);
94
            //merge bindings from subquery
95
            $this->addBindings($builder, $subquery->getBindings(), 'join');
96
97
            return $builder;
98
        });
99
    }
100
101
    /**
102
     * Add extension to the builder.
@@ 106-119 (lines=14) @@
103
     *
104
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
105
     */
106
    protected function addJoinSubquery($builder)
107
    {
108
        $builder->macro('joinSubquery', function ($builder, $subquery, $alias, \Closure $on) {
109
            /*
110
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
111
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
112
             */
113
            $builder->join(DB::raw('('.$subquery->toSql().') '.$builder->getQuery()->getGrammar()->wrap($alias)), $on);
114
            //merge bindings from subquery
115
            $this->addBindings($builder, $subquery->getBindings(), 'join');
116
117
            return $builder;
118
        });
119
    }
120
121
    /**
122
     * Add extension to the builder.
@@ 126-139 (lines=14) @@
123
     *
124
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
125
     */
126
    protected function addWhereInSubquery($builder)
127
    {
128
        $builder->macro('whereInSubquery', function ($builder, $field, $subquery) {
129
            /*
130
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
131
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
132
             */
133
            $builder->whereRaw($builder->getQuery()->getGrammar()->wrap($field).' IN ('.$subquery->toSql().')');
134
            //merge bindings from subquery
135
            $this->addBindings($builder, $subquery->getBindings(), 'where');
136
137
            return $builder;
138
        });
139
    }
140
141
    /**
142
     * Add extension to the builder.
@@ 146-159 (lines=14) @@
143
     *
144
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
145
     */
146
    protected function addWhereNotInSubquery($builder)
147
    {
148
        $builder->macro('whereNotInSubquery', function ($builder, $field, $subquery) {
149
            /*
150
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
151
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
152
             */
153
            $builder->whereRaw($builder->getQuery()->getGrammar()->wrap($field).' NOT IN ('.$subquery->toSql().')');
154
            //merge bindings from subquery
155
            $this->addBindings($builder, $subquery->getBindings(), 'where');
156
157
            return $builder;
158
        });
159
    }
160
161
    /**
162
     * Add extension to the builder.
@@ 166-179 (lines=14) @@
163
     *
164
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
165
     */
166
    protected function addOrWhereInSubquery($builder)
167
    {
168
        $builder->macro('orWhereInSubquery', function ($builder, $field, $subquery) {
169
            /*
170
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
171
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
172
             */
173
            $builder->orWhereRaw($builder->getQuery()->getGrammar()->wrap($field).' IN ('.$subquery->toSql().')');
174
            //merge bindings from subquery
175
            $this->addBindings($builder, $subquery->getBindings(), 'where');
176
177
            return $builder;
178
        });
179
    }
180
181
    /**
182
     * Add extension to the builder.
@@ 186-199 (lines=14) @@
183
     *
184
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
185
     */
186
    protected function addOrWhereNotInSubquery($builder)
187
    {
188
        $builder->macro('orWhereNotInSubquery', function ($builder, $field, $subquery) {
189
            /*
190
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
191
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
192
             */
193
            $builder->orWhereRaw($builder->getQuery()->getGrammar()->wrap($field).' NOT IN ('.$subquery->toSql().')');
194
            //merge bindings from subquery
195
            $this->addBindings($builder, $subquery->getBindings(), 'where');
196
197
            return $builder;
198
        });
199
    }
200
201
    /**
202
     * Add extension to the builder.
@@ 206-219 (lines=14) @@
203
     *
204
     * @param \Illuminate\Database\Eloquent\Builder|Relation $builder
205
     */
206
    protected function addFromSubquery($builder)
207
    {
208
        $builder->macro('fromSubquery', function ($builder, $subquery, $alias) {
209
            /*
210
             * @var $builder \Illuminate\Database\Eloquent\Builder|Relation
211
             * @var $subquery \Illuminate\Database\Eloquent\Builder|Relation
212
             */
213
            $builder->from(DB::raw('('.$subquery->toSql().') '.$builder->getQuery()->getGrammar()->wrap($alias)));
214
            //merge bindings from subquery
215
            $builder->setBindings(array_merge($subquery->getBindings(), $builder->getBindings()));
216
217
            return $builder;
218
        });
219
    }
220
}
221