コード例 #1
0
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     if ($body = \Request::input('body')) {
         $result = Word::with('position', 'translations')->where('body', $body)->orderBy('position_id', 'DESC')->get();
         $exercises = \Auth::user()->exercises;
         $words = [];
         foreach ($result as $key => $item) {
             $words[$key]['id'] = $item->getId();
             $words[$key]['body'] = $item->body;
             $words[$key]['ts'] = $item->ts;
             $words[$key]['position'] = $item->position ? $item->position->body : null;
             $words[$key]['used'] = $exercises->contains('word_id', $item->id);
             $words[$key]['translations'] = [];
             foreach ($item->translations as $_key => $translation) {
                 $words[$key]['translations'][$_key]['id'] = $translation->getId();
                 $words[$key]['translations'][$_key]['body'] = $translation->body;
             }
         }
         if (count($words) > 0) {
             $response = response()->json($words);
         } else {
             $response = response()->json(['errors' => ['The word hasn\'t found.']], 404);
         }
     } else {
         if ($autocomplete = \Request::input('autocomplete')) {
             $words = Word::select('body')->where('body', 'LIKE', "{$autocomplete}%")->groupBy('body')->take(\Request::header('Limit') ?: 5)->get();
             if (count($words) > 0) {
                 $response = response()->json($words);
             } else {
                 $response = response()->json(['errors' => ['The matched words haven\'t found.']], 404);
             }
         } else {
             $result = Word::with('position')->paginate(\Request::header('Limit') ?: 10);
             $headers['Current-Page'] = $result->currentPage();
             $headers['Last-Page'] = $result->lastPage();
             $words = [];
             foreach ($result as $key => $item) {
                 $words[$key]['id'] = $item->getId();
                 $words[$key]['body'] = $item->body;
                 $words[$key]['ts'] = $item->ts;
                 $words[$key]['position'] = $item->position ? $item->position->body : null;
             }
             if (count($words) > 0) {
                 $response = response()->json($words, 200, $headers);
             } else {
                 $response = response()->json(['errors' => ['there aren\'t any words.']], 404);
             }
         }
     }
     return $response;
 }