@@ -26,8 +26,8 @@ public static function searchable()
2626 */
2727 protected static function applySearch ($ query , $ search )
2828 {
29- return tap ( parent :: applySearch ( $ query, $ search ), function ($ query ) use ($ search ) {
30- static ::applyRelationSearch ($ query , $ search );
29+ return $ query-> where ( function ($ query ) use ($ search ) {
30+ return static ::applyRelationSearch (parent :: applySearch ( $ query, $ search ) , $ search );
3131 });
3232 }
3333
@@ -36,23 +36,17 @@ protected static function applySearch($query, $search)
3636 *
3737 * @param \Illuminate\Database\Eloquent\Builder $query
3838 * @param string $search
39- * @return void
39+ * @return \Illuminate\Database\Eloquent\Builder
4040 */
41- public static function applyRelationSearch (Builder $ query , string $ search )
41+ public static function applyRelationSearch (Builder $ query , string $ search ): Builder
4242 {
43- foreach (static ::searchableRelations () as $ relation => $ columns ) {
43+ foreach ($ searchableRelations = static ::searchableRelations () as $ relation => $ columns ) {
4444 $ query ->orWhereHas ($ relation , function ($ query ) use ($ columns , $ search ) {
4545 $ query ->where (static ::searchQueryApplier ($ columns , $ search ));
4646 });
4747 }
4848
49- // All search conditionals have to be combined into 1 nested conditional.
50- // We just applied a query to search for relationship columns while Nova
51- // has also applied a separate query to search for model columns. That's
52- // why we merge last 2 conditionals into 1 nested conditional which leaves
53- // us with this nicely formatted query that also seatches in relationships.
54- // SELECT ? FROM ? WHERE ($searchQuery OR $relationQuery)
55- static ::mergeLastWheres ($ query , 2 );
49+ return $ query ;
5650 }
5751
5852 /**
@@ -80,21 +74,4 @@ public static function searchQueryApplier(array $columns, string $search): Closu
8074 }
8175 };
8276 }
83-
84- /**
85- * Merge last where conditionals into a 1 nested conditional.
86- *
87- * @param \Illuminate\Database\Eloquent\Builder $query
88- * @param int $count
89- * @return void
90- */
91- public static function mergeLastWheres (Builder $ query , int $ count )
92- {
93- $ query = $ query ->getQuery ();
94- $ queries = array_splice ($ query ->wheres , $ count );
95-
96- $ query ->where (function ($ query ) use ($ queries ) {
97- $ query ->wheres = array_merge ($ query ->wheres , $ queries );
98- });
99- }
10077}
0 commit comments