File tree Expand file tree Collapse file tree 4 files changed +58
-1
lines changed Expand file tree Collapse file tree 4 files changed +58
-1
lines changed Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Yajra \DataTables ;
4+
5+ use Illuminate \Http \Resources \Json \AnonymousResourceCollection ;
6+
7+ class ApiResourceDataTable extends CollectionDataTable
8+ {
9+ /**
10+ * Can the DataTable engine be created with these parameters.
11+ *
12+ * @param mixed $source
13+ * @return bool
14+ */
15+ public static function canCreate ($ source )
16+ {
17+ return $ source instanceof AnonymousResourceCollection;
18+ }
19+
20+ /**
21+ * Factory method, create and return an instance for the DataTable engine.
22+ *
23+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array>|array $source
24+ * @return ApiResourceDataTable|DataTableAbstract
25+ */
26+ public static function create ($ source )
27+ {
28+ return parent ::create ($ source );
29+ }
30+
31+ /**
32+ * CollectionEngine constructor.
33+ *
34+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array> $collection
35+ */
36+ public function __construct (AnonymousResourceCollection $ collection )
37+ {
38+ $ this ->request = app ('datatables.request ' );
39+ $ this ->config = app ('datatables.config ' );
40+ $ this ->collection = collect ($ collection );
41+ $ this ->original = collect ($ collection );
42+ $ this ->columns = array_keys ($ this ->serialize (collect ($ collection )->first ()));
43+ }
44+ }
Original file line number Diff line number Diff line change 66use Exception ;
77use Illuminate \Contracts \Support \Arrayable ;
88use Illuminate \Http \JsonResponse ;
9+ use Illuminate \Http \Resources \Json \AnonymousResourceCollection ;
910use Illuminate \Support \Arr ;
1011use Illuminate \Support \Collection ;
1112use Illuminate \Support \Str ;
@@ -72,7 +73,7 @@ public static function canCreate($source)
7273 /**
7374 * Factory method, create and return an instance for the DataTable engine.
7475 *
75- * @param array|\Illuminate\Support\Collection<array-key, array> $source
76+ * @param AnonymousResourceCollection| array|\Illuminate\Support\Collection<array-key, array> $source
7677 * @return static
7778 */
7879 public static function create ($ source )
Original file line number Diff line number Diff line change @@ -137,6 +137,17 @@ public function collection($collection): CollectionDataTable
137137 return CollectionDataTable::create ($ collection );
138138 }
139139
140+ /**
141+ * DataTables using Collection.
142+ *
143+ * @param \Illuminate\Http\Resources\Json\AnonymousResourceCollection<array-key, array>|array $resource
144+ * @return ApiResourceDataTable|DataTableAbstract
145+ */
146+ public function resource ($ resource )
147+ {
148+ return ApiResourceDataTable::create ($ resource );
149+ }
150+
140151 /**
141152 * Get html builder instance.
142153 *
Original file line number Diff line number Diff line change 4848 'eloquent ' => Yajra \DataTables \EloquentDataTable::class,
4949 'query ' => Yajra \DataTables \QueryDataTable::class,
5050 'collection ' => Yajra \DataTables \CollectionDataTable::class,
51+ 'resource ' => Yajra \DataTables \ApiResourceDataTable::class,
5152 ],
5253
5354 /*
You can’t perform that action at this time.
0 commit comments