2014-10-04 44 views
0

我在Laravel建立了一個API來學習如何做這樣的事情。我遵循Laracasts課程來做到這一點,但是我對自己想要做的部分有些麻煩。無法轉換雄辯查詢的結果

目前,我在我的控制器中有這個功能。它從兩個表中提取數據,然後將其返回。

public function lesson($userid) 
{ 

    $lessons = DB::table('lessons') 
       ->join('userlessons', 'lessons.id', '=', 'userlessons.lessonsid') 
       ->select('lessons.name', 'lessons.seen') 
       ->where('userlessons.userid','=', $userid) 
       ->get(); 

    return $this->respondWithPagination($lessons, [ 

     'data' => $this->LessonTransformer->transformCollection($lessons) 

    ]); 

} 

而且LessonTransformer是這樣的:

class LessonTransformer extends Transformer 
{ 

    public function transformCollection($items) 
    { 

     return array_map([$this, 'transform'], $items); 

    } 

    public function transform($item) 
    { 

     return [ 

      'name' => $item['name'], 
      'seen' => (bool) $item['seen'] 

     ]; 

    } 

} 

我嘗試了很多的解決方案,一些聰明的,一些愚蠢的。不過,我不斷收到此錯誤:Cannot use object of type stdClass as array

回答

0

如果你得到這樣的錯誤,可能是你需要改變:

return [  
    'name' => $item['name'], 
    'seen' => (bool) $item['seen']  
]; 

到:

return [  
    'name' => $item->name, 
    'seen' => (bool) $item->seen 
]; 

但是你有沒有表現出在哪一行錯誤出現,所以這只是一個猜測