Skip to content

Commit 405a522

Browse files
committed
Add ability to optionally manipulate the model query
1 parent 2e05aa9 commit 405a522

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ class UsersController extends Controller
2626
public function dataTable(Request $request)
2727
{
2828
return (new DataTableResponder(User::class, $request))
29-
->setPerPage(10) // Optional, default: 15
29+
->query(function($query) { // Optional, default: none
30+
$query->where('name', 'like', 'B%');
31+
})
32+
->setPerPage(10) // Optional, default: 15
3033
->respond();
3134
}
3235
}

src/DataTableResponder.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ class DataTableResponder
2121
*/
2222
private $request;
2323

24+
/**
25+
* @var callable
26+
*/
27+
private $queryManipulator;
28+
2429
/**
2530
* @var int
2631
*/
@@ -58,6 +63,18 @@ public function setPerPage($perPage)
5863
return $this;
5964
}
6065

66+
/**
67+
* Sets the callable used to manipulate the model query.
68+
*
69+
* @param callable $queryManipulator
70+
* @return DataTableResponder
71+
*/
72+
public function query(callable $queryManipulator)
73+
{
74+
$this->queryManipulator = $queryManipulator;
75+
return $this;
76+
}
77+
6178
/**
6279
* Builds the Eloquent query based on the request.
6380
*
@@ -75,6 +92,11 @@ private function buildQuery(Request $request)
7592
$query->orderBy($orderByField, $orderByDirection);
7693
}
7794

95+
$queryManipulator = $this->queryManipulator;
96+
if ($queryManipulator) {
97+
$queryManipulator($query);
98+
}
99+
78100
return $query;
79101
}
80102

0 commit comments

Comments
 (0)