42 lines
1.2 KiB
PHP
42 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace kernel\IGTabel;
|
||
|
|
||
|
use app\helpers\Debug;
|
||
|
use Illuminate\Database\Eloquent\Collection;
|
||
|
|
||
|
class ListJsonTableEloquentCollection
|
||
|
{
|
||
|
private string|null $jsonStr;
|
||
|
private array $meta = [];
|
||
|
|
||
|
/**
|
||
|
* @param Collection $collection
|
||
|
* @param array $params
|
||
|
* @throws \Exception
|
||
|
*/
|
||
|
public function __construct(Collection $collection, array $params = [])
|
||
|
{
|
||
|
if (!isset($params['model'])) {
|
||
|
throw new \Exception(message: "The parameter model must not be empty");
|
||
|
}
|
||
|
$model = new $params['model']();
|
||
|
$this->meta['columns'] = $params['columns'] ?? $model->labels();
|
||
|
$this->meta['perPage'] = $params['perPage'] ?? 10;
|
||
|
$this->meta['currentPage'] = $params['currentPage'] ?? 1;
|
||
|
$this->meta['baseUrl'] = $params['baseUrl'] ?? $model->table;
|
||
|
$this->meta['params'] = $params['params'] ?? [];
|
||
|
$this->meta['actions'] = $params['actions'] ?? [];
|
||
|
|
||
|
$this->jsonStr = (new JSONCreator($this->meta, $collection->toArray()))->getJson();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return string|null
|
||
|
*/
|
||
|
public function getJson(): string|null
|
||
|
{
|
||
|
return $this->jsonStr;
|
||
|
}
|
||
|
|
||
|
}
|