7
7
trait QueryShorter
8
8
{
9
9
10
- // filter data by field name
11
- public function scopeSearchByField ($ query , $ filed_name , $ condition = '= ' )
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ /*
18
+ |--------------------------------------------------------------------------
19
+ | LIKE SEARCH
20
+ |--------------------------------------------------------------------------
21
+ */
22
+ public function scopeLikeSearch ($ query , $ filed_name )
12
23
{
13
- $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ filed_name, $ condition ) {
14
- $ qr ->where ($ filed_name , $ condition , request ()->$ filed_name );
24
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ filed_name ) {
25
+ $ qr ->where ($ filed_name , ' LIKE ' , ' % ' . request ()->$ filed_name . ' % ' );
15
26
});
16
27
}
17
28
18
29
19
30
20
- // search from date
21
- public function scopeSearchDateFrom ($ query , $ filed_name , $ from = 'from_date ' )
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+ /*
39
+ |--------------------------------------------------------------------------
40
+ | LIKE SEARCH MULTIPLE FIELD
41
+ |--------------------------------------------------------------------------
42
+ */
43
+ public function scopeLikeSearchArr ($ query , $ filed_names )
22
44
{
45
+ foreach ($ filed_names as $ key => $ filed_name ) {
46
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ filed_name ) {
47
+ $ qr ->where ($ filed_name , 'LIKE ' , '% ' . request ()->$ filed_name . '% ' );
48
+ });
49
+ }
50
+ }
51
+
23
52
24
- $ query ->when (request ()->filled ($ from ), function ($ qr ) use ($ filed_name , $ from ) {
25
- $ qr ->where ($ filed_name , '>= ' , request ()->$ from );
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ /*
62
+ |--------------------------------------------------------------------------
63
+ | SEARCH DATA BY FIELD NAME
64
+ |--------------------------------------------------------------------------
65
+ */
66
+ public function scopeSearchByField ($ query , $ filed_name )
67
+ {
68
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ filed_name ) {
69
+ $ qr ->where ($ filed_name , request ()->$ filed_name );
26
70
});
27
71
}
28
72
29
73
30
74
31
- // search to date
32
- public function scopeSearchDateTo ($ query , $ filed_name , $ to = 'to_date ' )
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+ /*
84
+ |--------------------------------------------------------------------------
85
+ | SEARCH MULTIPLE DATA BY FIELD NAME
86
+ |--------------------------------------------------------------------------
87
+ */
88
+ public function scopeSearchByFields ($ query , $ filed_names )
33
89
{
90
+ foreach ($ filed_names as $ key => $ filed_name ) {
34
91
35
- $ query ->when (request ()->filled ($ to ), function ($ qr ) use ($ filed_name , $ to ) {
36
- $ qr ->where ($ filed_name , '<= ' , request ()->$ to );
37
- });
92
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ filed_name ) {
93
+ $ qr ->where ($ filed_name , request ()->$ filed_name );
94
+ });
95
+ }
96
+
38
97
}
39
98
40
99
41
- // search date between two date
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+ /*
112
+ |--------------------------------------------------------------------------
113
+ | DATE FILTER [FROM DATE - TO DATE] BY DEFAULT IT USING DATE COLUMN OR YOU CAN PASS YOUR COLUMN NAME (DATE FILED)
114
+ |--------------------------------------------------------------------------
115
+ */
42
116
public function scopeDateFilter ($ query , $ filed_name = 'date ' )
43
117
{
44
118
$ query ->when (request ()->filled ('from ' ) | request ()->filled ('from_date ' ), function ($ qr ) use ($ filed_name ) {
@@ -52,12 +126,99 @@ public function scopeDateFilter($query, $filed_name = 'date')
52
126
53
127
54
128
55
- // search data from relationship
129
+
130
+
131
+
132
+
133
+
134
+ /*
135
+ |--------------------------------------------------------------------------
136
+ | SEARCH BY FROM DATE, BY DEFAULT IT USING FROM DATE INPUT FIELD OR YOU CAN PASS YOUR INPUT FIELD NAME (FROM DATE)
137
+ |--------------------------------------------------------------------------
138
+ */
139
+ public function scopeSearchDateFrom ($ query , $ filed_name , $ from = null )
140
+ {
141
+ if ($ from == null ) {
142
+ $ from = 'from_date ' ;
143
+ }
144
+
145
+ $ query ->when (request ()->filled ($ from ), function ($ qr ) use ($ filed_name , $ from ) {
146
+ $ qr ->where ($ filed_name , '>= ' , request ($ from ));
147
+ });
148
+ }
149
+
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+ /*
161
+ |--------------------------------------------------------------------------
162
+ | SEARCH BY TO DATE, BY DEFAULT IT USING TO DATE INPUT FIELD OR YOU CAN PASS YOUR INPUT FIELD NAME (TO DATE)
163
+ |--------------------------------------------------------------------------
164
+ */
165
+ public function scopeSearchDateTo ($ query , $ filed_name , $ to = null )
166
+ {
167
+ if ($ to == null ) {
168
+ $ to = 'to ' ;
169
+ }
170
+
171
+ $ query ->when (request ()->filled ($ to ), function ($ qr ) use ($ filed_name , $ to ) {
172
+ $ qr ->where ($ filed_name , '<= ' , request ($ to ));
173
+ });
174
+ }
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ /*
188
+ |--------------------------------------------------------------------------
189
+ | LIKE SEARCH IN RELATIONAL TABLE
190
+ |--------------------------------------------------------------------------
191
+ */
192
+ public function scopeLikeSearchRelation ($ query , $ relation , $ filed_name )
193
+ {
194
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ relation , $ filed_name ) {
195
+ $ qr ->whereHas ($ relation , function ($ q ) use ($ filed_name ) {
196
+ $ q ->where ($ filed_name , 'LIKE ' , '% ' . request ($ filed_name ) . '% ' );
197
+ });
198
+ });
199
+ }
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+
211
+
212
+ /*
213
+ |--------------------------------------------------------------------------
214
+ | SEARCH BY FILED FROM RELATIONAL TABLE
215
+ |--------------------------------------------------------------------------
216
+ */
56
217
public function scopeSearchFromRelation ($ query , $ relation , $ filed_name )
57
218
{
58
- $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ relation , $ filed_name ) {
59
- $ qr ->whereHas ($ relation , function ($ q ) use ($ filed_name ) {
60
- $ q ->where ($ filed_name , request ()-> $ filed_name );
219
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ relation , $ filed_name ) {
220
+ $ qr ->whereHas ($ relation , function ($ q ) use ($ filed_name ) {
221
+ $ q ->where ($ filed_name , request ($ filed_name) );
61
222
});
62
223
});
63
224
}
@@ -66,7 +227,47 @@ public function scopeSearchFromRelation($query, $relation, $filed_name)
66
227
67
228
68
229
69
- // sort data by its key
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ /*
239
+ |--------------------------------------------------------------------------
240
+ | SEARCH MULTIPLE FIELD FROM RELATIONAL TABLE
241
+ |--------------------------------------------------------------------------
242
+ */
243
+ public function scopeSearchItemsFromRelation ($ query , $ relation , $ filed_names )
244
+ {
245
+ foreach ($ filed_names as $ key => $ filed_name ) {
246
+ $ query ->when (request ()->filled ($ filed_name ), function ($ qr ) use ($ relation , $ filed_name ) {
247
+ $ qr ->whereHas ($ relation , function ($ q ) use ($ filed_name ) {
248
+ $ q ->where ($ filed_name , request ($ filed_name ));
249
+ });
250
+ });
251
+ }
252
+ }
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+ /*
267
+ |--------------------------------------------------------------------------
268
+ | SORT BY FIELD
269
+ |--------------------------------------------------------------------------
270
+ */
70
271
public function scopeSortby ($ query )
71
272
{
72
273
$ query ->when (request ()->filled ('sort_by_key ' ), function ($ query ) {
0 commit comments