2014-10-04 47 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 
]; 

但是你有没有表现出在哪一行错误出现,所以这只是一个猜测