From 4851c10e3cd902ec8e4f61a60c6c3a1122b5e8d5 Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 8 Oct 2019 19:23:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=86=E5=88=86=E6=88=90Service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/AnimalController.php | 29 ++++----------- app/Services/AnimalService.php | 45 +++++++++++++++++++++++ 2 files changed, 52 insertions(+), 22 deletions(-) create mode 100644 app/Services/AnimalService.php diff --git a/app/Http/Controllers/AnimalController.php b/app/Http/Controllers/AnimalController.php index 229e19b..651d046 100644 --- a/app/Http/Controllers/AnimalController.php +++ b/app/Http/Controllers/AnimalController.php @@ -8,12 +8,15 @@ use App\Http\Resources\AnimalResource; use Auth; use App\Http\Requests\StoreAnimalRequest; +use App\Services\AnimalService; class AnimalController extends Controller { + private $animalService; - public function __construct() + public function __construct(AnimalService $animalService) { + $this->animalService = $animalService; $this->middleware('auth:api', ['except' => ['index','show']]); } @@ -33,27 +36,9 @@ public function index(Request $request) $query = Animal::query(); - // 篩選欄位條件 - if (isset($request->filters)) { - $filters = explode(',', $request->filters); - foreach ($filters as $key => $filter) { - list($criteria, $value) = explode(':', $filter); - $query->where($criteria, 'like', "%$value%"); - } - } - - //排列順序 - if (isset($request->sort)) { - $sorts = explode(',', $request->sort); - foreach ($sorts as $key => $sort) { - list($criteria, $value) = explode(':', $sort); - if ($value == 'asc' || $value == 'desc') { - $query->orderBy($criteria, $value); - } - } - } else { - $query->orderBy('id', 'asc'); - } + $query = $this->animalService->filterAnimals($request->filters, $query); + + $query = $this->animalService->sortAnimals($request->sort, $query); $animals = $query->where('id', '>=', $marker)->paginate($limit); diff --git a/app/Services/AnimalService.php b/app/Services/AnimalService.php new file mode 100644 index 0000000..8eb0270 --- /dev/null +++ b/app/Services/AnimalService.php @@ -0,0 +1,45 @@ + $filter) { + list($criteria, $value) = explode(':', $filter); + $query->where($criteria, $value); + } + } + + return $query; + } + + /** + * + */ + public function sortAnimals($sorts, $query) + { + if (isset($sorts)) { + $sortArray = explode(',', $sorts); + foreach ($sortArray as $key => $sort) { + list($criteria, $value) = explode(':', $sort); + if ($value == 'asc' || $value == 'desc') { + $query->orderBy($criteria, $value); + } + } + } else { + $query->orderBy('id', 'asc'); + } + + return $query; + } +} +