@@ -117,25 +117,29 @@ private function extractColumnNames(): array
117117 */
118118 private function filterColumns ()
119119 {
120- foreach ($ this ->filters as $ filter ) {
121- $ values = $ filter ['values ' ];
122- $ modifiers = $ filter ['modifiers ' ] ?? [];
120+ foreach ($ this ->columns as $ name => $ settings ) {
121+ if (!isset ($ settings ['value ' ])) {
122+ continue ;
123+ }
124+
125+ $ value = $ settings ['value ' ] ?? null ;
126+ $ modifiers = $ settings ['modifiers ' ] ?? [];
123127
124- if (Str::contains ($ filter [ ' column ' ] , '. ' )) {
125- $ relationBits = explode ('. ' , $ filter [ ' column ' ] );
128+ if (Str::contains ($ name , '. ' )) {
129+ $ relationBits = explode ('. ' , $ name );
126130
127131 $ attribute = array_pop ($ relationBits );
128132
129133 $ relation = implode ('. ' , $ relationBits );
130134
131- $ this ->query ->whereHas ($ relation , function (Builder $ query ) use ($ modifiers , $ attribute , $ values ) {
132- $ this ->applyFilter ($ query , $ modifiers , $ attribute , $ values );
135+ $ this ->query ->whereHas ($ relation , function (Builder $ query ) use ($ modifiers , $ attribute , $ value ) {
136+ $ this ->applyFilter ($ query , $ modifiers , $ attribute , $ value );
133137 });
134138
135139 continue ;
136140 }
137141
138- $ this ->applyFilter ($ this ->query , $ modifiers , $ filter [ ' column ' ] , $ values );
142+ $ this ->applyFilter ($ this ->query , $ modifiers , $ name , $ value );
139143 }
140144 }
141145
@@ -186,12 +190,12 @@ private function searchColumns()
186190 $ relations = [];
187191
188192 $ this ->query ->where (function ($ query ) use (&$ relations ) {
189- foreach ($ this ->columns as $ column ) {
190- $ isSearchable = $ column ['searchable ' ] ?? false ;
193+ foreach ($ this ->columns as $ name => $ settings ) {
194+ $ isSearchable = ( bool )( $ settings ['searchable ' ] ?? false ) ;
191195
192- if (isset ( $ column [ ' name ' ]) && filter_var ( $ isSearchable, FILTER_VALIDATE_BOOLEAN ) ) {
193- if (Str::contains ($ column [ ' name ' ] , '. ' )) {
194- $ relationBits = explode ('. ' , $ column [ ' name ' ] );
196+ if ($ isSearchable ) {
197+ if (Str::contains ($ name , '. ' )) {
198+ $ relationBits = explode ('. ' , $ name );
195199
196200 $ attribute = array_pop ($ relationBits );
197201
@@ -206,7 +210,7 @@ private function searchColumns()
206210 continue ;
207211 }
208212
209- $ query ->orWhere ($ column [ ' name ' ] , 'LIKE ' , sprintf ('%%%s%% ' , $ this ->search ));
213+ $ query ->orWhere ($ name , 'LIKE ' , sprintf ('%%%s%% ' , $ this ->search ));
210214 }
211215 }
212216 });
0 commit comments