2016-06-09 57 views
0

我正在使用laravel,並使用transform方法更改數據對象中項目的名稱,但它不起作用,它向我顯示了複製數據庫列名稱的相同數據。Transform()不起作用Laravel

<?php 
    namespace App\Http\Controllers; 
    use Illuminate\Http\Request; 
    use App\Http\Requests; 
    use App\Lessons; 
    use Illuminate\Support\Facades\Response; 
    use League\Fractal\TransformerAbstract; 
    class LessonsController extends Controller 
    { 
     public function index() 
     { 
      $lessons= Lessons::all(); 
      return Response::json([ 
       'data'=>$lessons->toArray() 
      ],200); 
     } 

     public function show($id) 
     { 
     $lessons= Lessons::find($id); 
     if(! $lessons) 
     { 
      return Response::json([  
       'error'=>[ 
        'message'=>'Lesson not found', 
       ] 
      ],404); 
     } 
     return Response::json([ 
      'data'=>$lessons->toArray() 
     ],200); 
    } 
    private function transform ($lessons) 
    { 
     return array_map(function($lesson) 
     { 
      return [ 
       'heading'=>$lesson['title'], 
       'body'=>$lesson['body'] 
      ]; 
     },$lessons->toArray()); 
    } 
} 

,這是我打電話的網址:

http://localhost:8000/api/v1/lessons

,這是輸出我越來越:

{ 
    "data": [ 
    { 
     "title": "Title 1", 
     "body": "body 1" 
    }, 
    { 
     "title": "title 2", 
     "body": "body 2" 
    }, 
    { 
     "title": "Title 3", 
     "body": "body 3" 
    }, 
    { 
     "title": "title 4", 
     "body": "body 4" 
    } 
    ] 
} 

底線:我想標題標題,而不是在輸出,但沒有得到它。轉換功能不起作用

+0

我看不到在您的代碼中任何地方使用'transform()'方法。 – Doom5

回答

0

您必須將$lessons傳遞給您的transform()方法。

public function index() 
{ 
    $lessons= Lessons::all(); 
    return Response::json([ 
     'data'=> $this->transform($lessons) 
    ], 200); 
} 
+0

謝謝先生, 只是一個小小的修改,它的工作 –

+0

公共職能索引() { \t $ lesson = Lessons :: all(); return Response :: json([ 'data'=> $ this-> transform($ lessons) ],200); } –

+0

哦,是的。我沒有注意到你在'transform()'裏面調用'toArray()'。我的錯。 – Doom5