22
33namespace OpenSoutheners \LaravelEloquentUnionBuilder ;
44
5+ use Closure ;
56use Exception ;
67use Illuminate \Database \Eloquent \Builder ;
78use Illuminate \Database \SQLiteConnection ;
@@ -28,11 +29,6 @@ final class UnionBuilder
2829 */
2930 protected $ selectModelsColumns = [];
3031
31- /**
32- * @var array<string>
33- */
34- protected $ callingOnly = [];
35-
3632 /**
3733 * Construct new instance of class.
3834 *
@@ -177,11 +173,12 @@ public function getAllSelectedColumns()
177173 public function add (Builder $ builder , array $ columns = [])
178174 {
179175 $ builderModel = $ builder ->getModel ();
176+ $ builderModelClass = get_class ($ builder ->getModel ());
180177
181- $ this ->selectModelsColumns [get_class ( $ builderModel ) ] = $ columns
178+ $ this ->selectModelsColumns [$ builderModelClass ] = $ columns
182179 ?: Schema::getColumnListing ($ builderModel ->getTable ());
183180
184- $ this ->builders [] = $ builder ;
181+ $ this ->builders [$ builderModelClass ] = $ builder ;
185182
186183 return $ this ;
187184 }
@@ -190,11 +187,12 @@ public function add(Builder $builder, array $columns = [])
190187 * Forward next call only on the specified model's builder.
191188 *
192189 * @param class-string<\Illuminate\Database\Eloquent\Model> $model
190+ * @param \Closure $callback
193191 * @return $this
194192 */
195- public function callOnly ( $ model )
193+ public function callingOnly ( string $ model, Closure $ callback )
196194 {
197- $ this ->callingOnly [] = $ model ;
195+ $ callback ( $ this ->builders [ $ model]) ;
198196
199197 return $ this ;
200198 }
@@ -209,15 +207,9 @@ public function callOnly($model)
209207 public function __call ($ method , $ arguments )
210208 {
211209 foreach ($ this ->builders as $ builder ) {
212- if (! empty ($ this ->callingOnly ) && ! in_array (get_class ($ builder ->getModel ()), $ this ->callingOnly )) {
213- continue ;
214- }
215-
216210 $ this ->forwardCallTo ($ builder , $ method , $ arguments );
217211 }
218212
219- $ this ->callingOnly = [];
220-
221213 return $ this ;
222214 }
223215}
0 commit comments