category ->query() ->orderby('priority', 'ASC') ->orderby('name', 'ASC')->get(); return (new CategoryCollection($categories))->collection; } public function get(string $slug): CategoryResource { $category = $this->category ->query() ->where('slug', $slug) ->firstOrFail(); return new CategoryResource($category); } public function update(Category $category, array $data = []): bool { $data = $this->parseToArray($data); return $category ->update($data); } public function create(array $data = []): Category { $data = $this->parseToArray($data); return $this->category ->query() ->create($data); } private function parseToArray(array $data = []): array { $toSave = []; if (isset($data['name']) && !empty($data['name'])) $toSave['name'] = $data['name']; if (isset($data['slug']) && !empty($data['slug'])) $toSave['slug'] = $data['slug']; if (isset($data['default']) && is_bool($data['default'])) $toSave['default'] = $data['default']; if (isset($data['visible']) && is_bool($data['visible'])) $toSave['visible'] = $data['visible']; return $toSave; } }