get('page') ?? 1; $perPage = $request->get('per_page') ?? 10; $query = $this->model->query(); if ($page > 1) { $query->skip(($page - 1) * $perPage)->take($perPage); } else { $query->take($perPage); } $expand = $this->expand(); $expandParams = explode( ",", $request->get('expand') ?? ""); $finalExpand = array_intersect($expandParams, $expand); if ($finalExpand) { $res = $query->get()->load($finalExpand)->toArray(); } else { $res = $query->get()->toArray(); } $this->renderApi($res); } #[NoReturn] public function actionView($id): void { $expand = $this->expand(); $request = new Request(); $expandParams = explode( ",", $request->get('expand') ?? ""); $model = $this->model->where("id", $id)->first(); $finalExpand = array_intersect($expandParams, $expand); if ($finalExpand){ $model->load($finalExpand); } $res = []; if ($model){ $res = $model->toArray(); } $this->renderApi($res); } #[NoReturn] public function actionDelete($id): void { $model = $this->model->where("id", $id)->first(); $res = []; if ($model){ $res = $model->toArray(); } $model->delete(); $this->renderApi($res); } #[NoReturn] public function actionCreate(): void { $request = new Request(); $data = $request->post(); $data = [ 'title' => 'title' ]; Debug::prn($data); $model = $this->model; Debug::prn($model->toArray()); $model->save($data); } #[NoReturn] protected function renderApi(array $data): void { header("Content-Type: application/json"); echo json_encode($data); exit(); } }