|
3 | 3 | namespace App\Http\Controllers;
|
4 | 4 |
|
5 | 5 | use App\User;
|
| 6 | +use App\Role; |
6 | 7 | use Illuminate\Http\Request;
|
7 | 8 | use JamesDordoy\LaravelVueDatatable\Http\Resources\DataTableCollectionResource;
|
8 | 9 |
|
@@ -35,10 +36,7 @@ public function queryBuilder(Request $request)
|
35 | 36 | $request->input('column'),
|
36 | 37 | $request->input('dir'),
|
37 | 38 | $searchValue
|
38 |
| - ); |
39 |
| - |
40 |
| - $query |
41 |
| - ->join('roles', 'roles.id', '=', 'users.role_id') |
| 39 | + )->join('roles', 'roles.id', '=', 'users.role_id') |
42 | 40 | ->join('departments', 'departments.id', '=', 'roles.department_id')
|
43 | 41 | ->select(
|
44 | 42 | 'roles.name as role_name',
|
@@ -67,4 +65,37 @@ public function search(Request $request)
|
67 | 65 | $searchValue = $request->input('search');
|
68 | 66 | return User::where("name", "like", "%$searchValue%")->get();
|
69 | 67 | }
|
| 68 | + |
| 69 | + public function pivot(Request $request) |
| 70 | + { |
| 71 | + $searchValue = $request->input('search'); |
| 72 | + $orderBy = $request->input('column', 'id'); |
| 73 | + $orderByDir = $request->input('dir', 'asc'); |
| 74 | + $length = $request->input('length'); |
| 75 | + |
| 76 | + $query = User::eloquentQuery( |
| 77 | + $orderBy, |
| 78 | + $orderByDir, |
| 79 | + $searchValue |
| 80 | + ); |
| 81 | + |
| 82 | + if ($searchValue) { |
| 83 | + $query = $query->whereHas('roles', function ($q) use ($searchValue) { |
| 84 | + $q->orWhere('roles.name', "like", "%$searchValue%"); |
| 85 | + }); |
| 86 | + } |
| 87 | + |
| 88 | + $data = $query->with('roles')->paginate($length); |
| 89 | + |
| 90 | + return new DataTableCollectionResource($data); |
| 91 | + } |
| 92 | + |
| 93 | + public function checkForColumnNesting($column) |
| 94 | + { |
| 95 | + if (count(explode(".", $column)) > 1) { |
| 96 | + return $column; |
| 97 | + } else { |
| 98 | + return $this->getTable() . ".$column"; |
| 99 | + } |
| 100 | + } |
70 | 101 | }
|
0 commit comments