LaborApplyFilters.php 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. namespace App\Filters;
  3. use App\OrderIssue;
  4. use Illuminate\Database\Eloquent\Builder;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Carbon;
  7. class LaborApplyFilters
  8. {
  9. protected $request;
  10. protected $queryBuilder;
  11. protected $filters = [
  12. 'created_at_start',
  13. 'created_at_end',
  14. ];
  15. protected $orderIssueQuery;
  16. public function __construct(Request $request)
  17. {
  18. $this->request = $request;
  19. }
  20. public function apply($builder)
  21. {
  22. $this->queryBuilder = $builder;
  23. $filters = array_filter($this->request->only($this->filters), function ($item) {
  24. return $item !== null;
  25. });
  26. foreach ($filters as $filter => $value) {
  27. if (method_exists($this, $filter)) {
  28. $this->$filter($value, $this->queryBuilder);
  29. }
  30. }
  31. return $this->queryBuilder;
  32. }
  33. public function created_at_start($created_at_start)
  34. {
  35. $this->queryBuilder->whereDate('created_at', '>=', $created_at_start);
  36. }
  37. public function created_at_end($created_at_end)
  38. {
  39. $this->queryBuilder->whereDate('created_at', '<=', $created_at_end);
  40. }
  41. }