Skip to content
This repository has been archived by the owner on Apr 27, 2022. It is now read-only.

Commit

Permalink
拆分成Service
Browse files Browse the repository at this point in the history
  • Loading branch information
victorbuild committed Oct 8, 2019
1 parent 9e34175 commit 4851c10
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 22 deletions.
29 changes: 7 additions & 22 deletions app/Http/Controllers/AnimalController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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']]);
}

Expand All @@ -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);

Expand Down
45 changes: 45 additions & 0 deletions app/Services/AnimalService.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace App\Services;

class AnimalService
{
/**
*
*/
public function filterAnimals($filters, $query)
{

// 篩選欄位條件
if (isset($filters)) {
$filtersArray = explode(',', $filters);
foreach ($filtersArray as $key => $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;
}
}

0 comments on commit 4851c10

Please sign in to comment.