Skip to content

Instantly share code, notes, and snippets.

@Luitame
Created July 27, 2017 19:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Luitame/b65ab1ae9166c696676b7e32ac1fb565 to your computer and use it in GitHub Desktop.
Save Luitame/b65ab1ae9166c696676b7e32ac1fb565 to your computer and use it in GitHub Desktop.
My trait sample
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
trait ApiControllerTrait
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$limit = $request->all()['limit'] ?? 20;
$order = $request->all()['order'] ?? null;
if ($order !== null) {
$order = explode(',', $order);
}
$order[0] = $order[0] ?? 'id';
$order[1] = $order[1] ?? 'asc';
$where = $request->all()['where'] ?? [];
$like = $request->all()['like'] ?? null;
if ($like) {
$like = explode(',', $like);
$like[1] = '%' . $like[1] . '%';
}
$result = $this->model->orderBy($order[0], $order[1])
->where(function($query) use ($like) {
if ($like) {
return $query->where($like[0], 'like', $like[1]);
}
return $query;
})
->where($where)
->with($this->relationships())
->paginate($limit);
return response()->json($result);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$result = $this->model->create($request->all());
return response()->json($result);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$result = $this->model->with($this->relationships())
->findOrFail($id);
return response()->json($result);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$result = $this->model->findOrFail($id);
$result->update($request->all());
return response()->json($result);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
$result = $this->model->findOrFail($id);
$result->delete();
return response()->json($result);
}
protected function relationships()
{
if (isset($this->relationships)) {
return $this->relationships;
}
return [];
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment