Skip to content

Commit c7ac301

Browse files
authored
Update QueryShorter.php
1 parent c58c708 commit c7ac301

File tree

1 file changed

+220
-19
lines changed

1 file changed

+220
-19
lines changed

src/QueryShorter.php

Lines changed: 220 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,38 +7,112 @@
77
trait QueryShorter
88
{
99

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)
1223
{
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 . '%');
1526
});
1627
}
1728

1829

1930

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)
2244
{
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+
2352

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);
2670
});
2771
}
2872

2973

3074

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)
3389
{
90+
foreach ($filed_names as $key => $filed_name) {
3491

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+
3897
}
3998

4099

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+
*/
42116
public function scopeDateFilter($query, $filed_name = 'date')
43117
{
44118
$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')
52126

53127

54128

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+
*/
56217
public function scopeSearchFromRelation($query, $relation, $filed_name)
57218
{
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));
61222
});
62223
});
63224
}
@@ -66,7 +227,47 @@ public function scopeSearchFromRelation($query, $relation, $filed_name)
66227

67228

68229

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+
*/
70271
public function scopeSortby($query)
71272
{
72273
$query->when(request()->filled('sort_by_key'), function ($query) {

0 commit comments

Comments
 (0)