@@ -24,9 +24,9 @@ class Controller extends BaseController
24
24
public function sendSuccessResponse ($ result = [], $ message = '' , $ code = Response::HTTP_OK )
25
25
{
26
26
$ response = [
27
- 'data ' => $ result ,
28
- 'success ' => true ,
29
- 'message ' => $ message ,
27
+ 'data ' => $ result ,
28
+ 'success ' => true ,
29
+ 'message ' => $ message ,
30
30
];
31
31
if (empty ($ result )) {
32
32
unset($ response ['data ' ]);
@@ -46,9 +46,9 @@ public function sendSuccessResponse($result = [], $message = '', $code = Respons
46
46
public function sendSuccessCollectionResponse ($ collection , $ message , $ code = Response::HTTP_OK )
47
47
{
48
48
$ response = [
49
- 'data ' => $ collection ,
50
- 'success ' => true ,
51
- 'message ' => $ message ,
49
+ 'data ' => $ collection ,
50
+ 'success ' => true ,
51
+ 'message ' => $ message ,
52
52
];
53
53
54
54
return new JsonResponse ($ response , $ code );
@@ -155,6 +155,32 @@ public function applySelectFilters(
155
155
});
156
156
}
157
157
158
+ /**
159
+ * Apply Select filters to a model relation.
160
+ *
161
+ * @param string $relation The relation to filter within.
162
+ * @param Builder $model The model to search on.
163
+ * @param array<string, mixed> $selectFields The fields to search in.
164
+ *
165
+ * @return Builder The filtered model.
166
+ */
167
+ public function applyRelationSelectFilters (
168
+ string $ relation ,
169
+ Builder $ model ,
170
+ array $ selectFields
171
+ ): Builder {
172
+ $ selectFields = array_filter ($ selectFields , function ($ value ) {
173
+ return !is_null ($ value ) && $ value !== '' ;
174
+ });
175
+ return $ model ->whereHas ($ relation , function (Builder $ query ) use ($ selectFields ) {
176
+ $ query ->where (function ($ query ) use ($ selectFields ) {
177
+ foreach ($ selectFields as $ field => $ value ) {
178
+ $ query ->orWhere ($ field , '= ' , $ value );
179
+ }
180
+ });
181
+ });
182
+ }
183
+
158
184
/**
159
185
* Apply Filters to a model.
160
186
*
@@ -170,21 +196,14 @@ public function applyFilters(
170
196
array $ searchFields ,
171
197
array $ selectFields ,
172
198
Builder $ model ,
173
- ?string $ relation = null ,
174
199
): Builder {
175
-
176
200
if ($ searchText && !empty ($ searchFields )) {
177
- if ($ relation ) {
178
- $ model = $ this ->applyRelationSearchFilters ($ relation , $ searchText , $ searchFields , $ model );
179
- } else {
180
- $ model = $ this ->applySearchFilters ($ searchText , $ model , $ searchFields );
181
- }
201
+ $ model = $ this ->applySearchFilters ($ searchText , $ model , $ searchFields );
182
202
}
183
203
184
204
if (!empty ($ selectFields )) {
185
- return $ this ->applySelectFilters ($ model , $ selectFields );
205
+ $ model = $ this ->applySelectFilters ($ model , $ selectFields );
186
206
}
187
-
188
207
return $ model ;
189
208
}
190
209
}
0 commit comments