我正在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
如果出现这样的错误,可能需要更改:
return [
'name' => $item['name'],
'seen' => (bool) $item['seen']
];
进入:
return [
'name' => $item->name,
'seen' => (bool) $item->seen
];
但您还没有显示错误出现在哪一行,所以这只是猜测