PATH:
home
/
lab2454c
/
vaultchip.com
/
platform
/
plugins
/
blog
/
src
/
Repositories
/
Eloquent
<?php namespace Botble\Blog\Repositories\Eloquent; use Botble\Base\Enums\BaseStatusEnum; use Botble\Blog\Repositories\Interfaces\CategoryInterface; use Botble\Support\Repositories\Eloquent\RepositoriesAbstract; use Eloquent; class CategoryRepository extends RepositoriesAbstract implements CategoryInterface { /** * {@inheritDoc} */ public function getDataSiteMap() { $data = $this->model ->with('slugable') ->where('status', BaseStatusEnum::PUBLISHED) ->orderBy('created_at', 'desc'); return $this->applyBeforeExecuteQuery($data)->get(); } /** * {@inheritDoc} */ public function getFeaturedCategories($limit, array $with = []) { $data = $this->model ->with(array_merge(['slugable'], $with)) ->where([ 'status' => BaseStatusEnum::PUBLISHED, 'is_featured' => 1, ]) ->select([ 'id', 'name', 'description', 'icon', ]) ->orderBy('order') ->limit($limit); return $this->applyBeforeExecuteQuery($data)->get(); } /** * {@inheritDoc} */ public function getAllCategories(array $condition = [], array $with = []) { $data = $this->model->with('slugable'); if (!empty($condition)) { $data = $data->where($condition); } $data = $data ->where('status', BaseStatusEnum::PUBLISHED) ->orderBy('created_at', 'DESC') ->orderBy('order', 'DESC'); if ($with) { $data = $data->with($with); } return $this->applyBeforeExecuteQuery($data)->get(); } /** * {@inheritDoc} */ public function getCategoryById($id) { $data = $this->model->with('slugable')->where([ 'id' => $id, 'status' => BaseStatusEnum::PUBLISHED, ]); return $this->applyBeforeExecuteQuery($data, true)->first(); } /** * {@inheritDoc} */ public function getCategories(array $select, array $orderBy) { $data = $this->model->with('slugable')->select($select); foreach ($orderBy as $by => $direction) { $data = $data->orderBy($by, $direction); } return $this->applyBeforeExecuteQuery($data)->get(); } /** * {@inheritDoc} */ public function getAllRelatedChildrenIds($id) { if ($id instanceof Eloquent) { $model = $id; } else { $model = $this->getFirstBy(['id' => $id]); } if (!$model) { return null; } $result = []; $children = $model->children()->select('id')->get(); foreach ($children as $child) { $result[] = $child->id; $result = array_merge($this->getAllRelatedChildrenIds($child), $result); } $this->resetModel(); return array_unique($result); } /** * {@inheritDoc} */ public function getAllCategoriesWithChildren(array $condition = [], array $with = [], array $select = ['*']) { $data = $this->model ->where($condition) ->with($with) ->select($select); return $this->applyBeforeExecuteQuery($data)->get(); } /** * {@inheritDoc} */ public function getFilters($filters) { $this->model = $this->originalModel; $orderBy = isset($filters['order_by']) ? $filters['order_by'] : 'created_at'; $order = isset($filters['order']) ? $filters['order'] : 'desc'; $this->model = $this->model->where('status', BaseStatusEnum::PUBLISHED)->orderBy($orderBy, $order); return $this->applyBeforeExecuteQuery($this->model)->paginate((int)$filters['per_page']); } /** * {@inheritDoc} */ public function getPopularCategories(int $limit, array $with = ['slugable'], array $withCount = ['posts']) { $data = $this->model ->with($with) ->withCount($withCount) ->orderBy('posts_count', 'desc') ->where('status', BaseStatusEnum::PUBLISHED) ->limit($limit); return $this->applyBeforeExecuteQuery($data)->get(); } }
[-] PostRepository.php
[edit]
[-] TagRepository.php
[edit]
[+]
..
[-] CategoryRepository.php
[edit]